[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32015] trunk/blender/source/blender/ makesrna/intern/rna_main_api.c: bugfix [#23910] Removing an object in Py crashes blender

Campbell Barton ideasman42 at gmail.com
Mon Sep 20 05:09:24 CEST 2010


Revision: 32015
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32015
Author:   campbellbarton
Date:     2010-09-20 05:09:24 +0200 (Mon, 20 Sep 2010)

Log Message:
-----------
bugfix [#23910] Removing an object in Py crashes blender

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_main_api.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_main_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_main_api.c	2010-09-20 02:53:39 UTC (rev 32014)
+++ trunk/blender/source/blender/makesrna/intern/rna_main_api.c	2010-09-20 03:09:24 UTC (rev 32015)
@@ -175,22 +175,13 @@
 
 void rna_Main_objects_remove(Main *bmain, ReportList *reports, struct Object *object)
 {
-	/*
-	  NOTE: the following example shows when this function should _not_ be called
-
-	  ob = bpy.data.add_object()
-	  scene.add_object(ob)
-
-	  # ob is freed here
-	  scene.remove_object(ob)
-
-	  # don't do this since ob is already freed!
-	  bpy.data.remove_object(ob)
-	*/
-	if(ID_REAL_USERS(object) <= 0)
+	if(ID_REAL_USERS(object) <= 0) {
+		unlink_object(NULL, object); /* needed or ID pointers to this are not cleared */
 		free_libblock(&bmain->object, object);
-	else
+	}
+	else {
 		BKE_reportf(reports, RPT_ERROR, "Object \"%s\" must have zero users to be removed, found %d.", object->id.name+2, ID_REAL_USERS(object));
+	}
 }
 
 struct Material *rna_Main_materials_new(Main *bmain, char* name)





More information about the Bf-blender-cvs mailing list