[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39619] trunk/blender/source/blender/ python/intern/bpy_rna.c: properly escape chars for pythons bpy objects __repr__

Campbell Barton ideasman42 at gmail.com
Mon Aug 22 20:13:38 CEST 2011


Revision: 39619
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39619
Author:   campbellbarton
Date:     2011-08-22 18:13:37 +0000 (Mon, 22 Aug 2011)
Log Message:
-----------
properly escape chars for pythons bpy objects __repr__

Modified Paths:
--------------
    trunk/blender/source/blender/python/intern/bpy_rna.c

Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c	2011-08-22 16:54:26 UTC (rev 39618)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c	2011-08-22 18:13:37 UTC (rev 39619)
@@ -814,34 +814,40 @@
 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_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;
 }
 




More information about the Bf-blender-cvs mailing list