[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55757] trunk/blender/source/blender: Fix #34856: crash passing an object rather than a mesh to bpy.data.mesh. remove(),

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Apr 3 15:43:12 CEST 2013


Revision: 55757
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55757
Author:   blendix
Date:     2013-04-03 13:43:12 +0000 (Wed, 03 Apr 2013)
Log Message:
-----------
Fix #34856: crash passing an object rather than a mesh to bpy.data.mesh.remove(),
this should give an error message but it didn't.

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

Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c	2013-04-03 11:36:48 UTC (rev 55756)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c	2013-04-03 13:43:12 UTC (rev 55757)
@@ -609,6 +609,9 @@
 {
 	StructRNA *base;
 
+	if (srna == &RNA_AnyType)
+		return true;
+
 	if (!type)
 		return false;
 

Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c	2013-04-03 11:36:48 UTC (rev 55756)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c	2013-04-03 13:43:12 UTC (rev 55757)
@@ -1778,8 +1778,10 @@
 							if (flag & PROP_THICK_WRAP) {
 								if (value == Py_None)
 									memset(data, 0, sizeof(PointerRNA));
+								else if (RNA_struct_is_a(param->ptr.type, ptr_type))
+									*((PointerRNA *)data) = param->ptr;
 								else
-									*((PointerRNA *)data) = param->ptr;
+									raise_error = true;
 							}
 							else {
 								/* for function calls, we sometimes want to pass the 'ptr' directly,
@@ -1787,8 +1789,10 @@
 								BLI_assert(value_new == NULL);
 								if (value == Py_None)
 									*((void **)data) = NULL;
+								else if (RNA_struct_is_a(param->ptr.type, ptr_type))
+									*((PointerRNA **)data) = &param->ptr;
 								else
-									*((PointerRNA **)data) = &param->ptr;
+									raise_error = true;
 							}
 						}
 						else if (value == Py_None) {




More information about the Bf-blender-cvs mailing list