[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25598] trunk/blender/source/blender: Python attribute lookup.

Martin Poirier theeth at yahoo.com
Mon Dec 28 23:48:10 CET 2009


Revision: 25598
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25598
Author:   theeth
Date:     2009-12-28 23:48:10 +0100 (Mon, 28 Dec 2009)

Log Message:
-----------
Python attribute lookup. Don't use RNA functions that don't have defined callbacks (can happen for operator functions used for registration only).

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/RNA_access.h
    trunk/blender/source/blender/makesrna/intern/rna_access.c
    trunk/blender/source/blender/python/intern/bpy_rna.c

Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h	2009-12-28 22:40:52 UTC (rev 25597)
+++ trunk/blender/source/blender/makesrna/RNA_access.h	2009-12-28 22:48:10 UTC (rev 25598)
@@ -855,6 +855,7 @@
 PropertyRNA *RNA_function_return(FunctionRNA *func);
 const char *RNA_function_ui_description(FunctionRNA *func);
 int RNA_function_flag(FunctionRNA *func);
+int RNA_function_defined(FunctionRNA *func);
 
 PropertyRNA *RNA_function_get_parameter(PointerRNA *ptr, FunctionRNA *func, int index);
 PropertyRNA *RNA_function_find_parameter(PointerRNA *ptr, FunctionRNA *func, const char *identifier);

Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c	2009-12-28 22:40:52 UTC (rev 25597)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c	2009-12-28 22:48:10 UTC (rev 25598)
@@ -3479,6 +3479,11 @@
 	return func->flag;
 }
 
+int RNA_function_defined(FunctionRNA *func)
+{
+	return func->call != NULL;
+}
+
 PropertyRNA *RNA_function_get_parameter(PointerRNA *ptr, FunctionRNA *func, int index)
 {
 	PropertyRNA *parm;

Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c	2009-12-28 22:40:52 UTC (rev 25597)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c	2009-12-28 22:48:10 UTC (rev 25598)
@@ -1682,7 +1682,8 @@
 	else if ((prop = RNA_struct_find_property(&self->ptr, name))) {
   		ret = pyrna_prop_to_py(&self->ptr, prop);
   	}
-	else if ((func = RNA_struct_find_function(&self->ptr, name))) {
+	/* RNA function only if callback is declared (no optional functions) */
+	else if ((func = RNA_struct_find_function(&self->ptr, name)) && RNA_function_defined(func)) {
 		ret = pyrna_func_to_py((BPy_DummyPointerRNA *)self, func);
 	}
 	else if (self->ptr.type == &RNA_Context) {





More information about the Bf-blender-cvs mailing list