[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