[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21690] branches/blender2.5/blender/source /blender: - was freeing reports on freed listbases

Campbell Barton ideasman42 at gmail.com
Sun Jul 19 06:50:10 CEST 2009


Revision: 21690
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21690
Author:   campbellbarton
Date:     2009-07-19 06:50:10 +0200 (Sun, 19 Jul 2009)

Log Message:
-----------
- was freeing reports on freed listbases
- free reports in a single loop.
- extrude was using a NULL scene, crashed when used as a macro

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/intern/report.c
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/report.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/report.c	2009-07-19 04:32:46 UTC (rev 21689)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/report.c	2009-07-19 04:50:10 UTC (rev 21690)
@@ -73,15 +73,21 @@
 
 void BKE_reports_clear(ReportList *reports)
 {
-	Report *report;
+	Report *report, *report_next;
 
 	if(!reports)
 		return;
 
-	for(report=reports->list.first; report; report=report->next)
+	report= reports->list.first;
+
+	while (report) {
+		report_next= report->next;
 		MEM_freeN(report->message);
+		MEM_freeN(report);
+		report= report_next;
+	}
 
-	BLI_freelistN(&reports->list);
+	reports->list.first= reports->list.last= NULL;
 }
 
 void BKE_report(ReportList *reports, ReportType type, const char *message)

Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c	2009-07-19 04:32:46 UTC (rev 21689)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c	2009-07-19 04:50:10 UTC (rev 21690)
@@ -622,9 +622,8 @@
 }
 
 /* generic extern called extruder */
-void extrude_mesh(Object *obedit, EditMesh *em, wmOperator *op)
+void extrude_mesh(Scene *scene, Object *obedit, EditMesh *em, wmOperator *op)
 {
-	Scene *scene= NULL;		// XXX CTX!
 	float nor[3]= {0.0, 0.0, 0.0};
 	short nr, transmode= 0;
 
@@ -704,7 +703,7 @@
 	EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
 	int constraint_axis[3] = {0, 0, 1};
 
-	extrude_mesh(obedit,em, op);
+	extrude_mesh(scene, obedit, em, op);
 
 	BKE_mesh_end_editmesh(obedit->data, em);
 
@@ -731,7 +730,7 @@
 	Object *obedit= CTX_data_edit_object(C);
 	EditMesh *em= BKE_mesh_get_editmesh(obedit->data);
 
-	extrude_mesh(obedit,em, op);
+	extrude_mesh(scene, obedit, em, op);
 
 	DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
 	WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c	2009-07-19 04:32:46 UTC (rev 21689)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c	2009-07-19 04:50:10 UTC (rev 21690)
@@ -227,6 +227,7 @@
 	
 	fastshade_free_render();	/* shaded view */
 	ED_preview_free_dbase();	/* frees a Main dbase, before free_blender! */
+	wm_free_reports(C);			/* before free_blender! - since the ListBases get freed there */
 	free_blender();				/* blender.c, does entire library and spacetypes */
 //	free_matcopybuf();
 	free_anim_copybuf();
@@ -270,8 +271,6 @@
 
 	RNA_exit();
 	
-	wm_free_reports(C);
-	
 	CTX_free(C);
 	
 	if(MEM_get_memory_blocks_in_use()!=0) {





More information about the Bf-blender-cvs mailing list