Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-08-22 22:13:37 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-08-22 22:13:37 +0400
commita937729f38875a57f589b8ccb114b13a5b22fd3f (patch)
treef837e86883facfff53e0fb312fbad5ae3963587f /source/blender/python
parent7d316b70b842ff376d07f5ba55302d31d92e6dbb (diff)
properly escape chars for pythons bpy objects __repr__
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/intern/bpy_rna.c42
1 files changed, 28 insertions, 14 deletions
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index 1b8f986e71c..72553872057 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -814,34 +814,40 @@ static PyObject *pyrna_struct_str(BPy_StructRNA *self)
static PyObject *pyrna_struct_repr(BPy_StructRNA *self)
{
ID *id= self->ptr.id.data;
+ PyObject *tmp_str;
+ PyObject *ret;
+
if(id == NULL || !PYRNA_STRUCT_IS_VALID(self))
return pyrna_struct_str(self); /* fallback */
+ tmp_str= PyUnicode_FromString(id->name+2);
+
if(RNA_struct_is_ID(self->ptr.type)) {
- return PyUnicode_FromFormat("bpy.data.%s[\"%s\"]",
+ ret= PyUnicode_FromFormat("bpy.data.%s[%R]",
BKE_idcode_to_name_plural(GS(id->name)),
- id->name+2);
+ tmp_str);
}
else {
- PyObject *ret;
const char *path;
path= RNA_path_from_ID_to_struct(&self->ptr);
if(path) {
- ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"].%s",
+ ret= PyUnicode_FromFormat("bpy.data.%s[%R].%s",
BKE_idcode_to_name_plural(GS(id->name)),
- id->name+2,
+ tmp_str,
path);
MEM_freeN((void *)path);
}
else { /* cant find, print something sane */
- ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"]...%s",
+ ret= PyUnicode_FromFormat("bpy.data.%s[%R]...%s",
BKE_idcode_to_name_plural(GS(id->name)),
- id->name+2,
+ tmp_str,
RNA_struct_identifier(self->ptr.type));
}
-
- return ret;
}
+
+ Py_DECREF(tmp_str);
+
+ return ret;
}
static PyObject *pyrna_prop_str(BPy_PropertyRNA *self)
@@ -911,27 +917,35 @@ static PyObject *pyrna_prop_str(BPy_PropertyRNA *self)
static PyObject *pyrna_prop_repr(BPy_PropertyRNA *self)
{
- ID *id;
+ ID *id= self->ptr.id.data;
+ PyObject *tmp_str;
PyObject *ret;
const char *path;
PYRNA_PROP_CHECK_OBJ(self)
- if((id= self->ptr.id.data) == NULL)
+ if(id == NULL)
return pyrna_prop_str(self); /* fallback */
+ tmp_str= PyUnicode_FromString(id->name+2);
+
path= RNA_path_from_ID_to_property(&self->ptr, self->prop);
if(path) {
- ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"].%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, path);
+ ret= PyUnicode_FromFormat("bpy.data.%s[%R].%s",
+ BKE_idcode_to_name_plural(GS(id->name)),
+ tmp_str,
+ path);
MEM_freeN((void *)path);
}
else { /* cant find, print something sane */
- ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"]...%s",
+ ret= PyUnicode_FromFormat("bpy.data.%s[%R]...%s",
BKE_idcode_to_name_plural(GS(id->name)),
- id->name+2,
+ tmp_str,
RNA_property_identifier(self->prop));
}
+ Py_DECREF(tmp_str);
+
return ret;
}