[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58203] trunk/blender/source/blender: Fix #35470: crash rendering from the terminal in some cases due to render info

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Jul 12 22:31:31 CEST 2013


Revision: 58203
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58203
Author:   blendix
Date:     2013-07-12 20:31:30 +0000 (Fri, 12 Jul 2013)
Log Message:
-----------
Fix #35470: crash rendering from the terminal in some cases due to render info
text threading issue.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/render/render_internal.c
    trunk/blender/source/blender/render/extern/include/RE_engine.h
    trunk/blender/source/blender/render/intern/source/external_engine.c

Modified: trunk/blender/source/blender/editors/render/render_internal.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_internal.c	2013-07-12 20:15:22 UTC (rev 58202)
+++ trunk/blender/source/blender/editors/render/render_internal.c	2013-07-12 20:31:30 UTC (rev 58203)
@@ -650,7 +650,7 @@
 			rj->lay = v3d->lay;
 			rj->v3d_override = true;
 		}
-		else if (camera_override != scene->camera)
+		else if (camera_override && camera_override != scene->camera)
 			rj->v3d_override = true;
 
 		if (v3d->localvd)
@@ -1060,9 +1060,8 @@
 	rp->bmain = CTX_data_main(C);
 	copy_m4_m4(rp->viewmat, rp->rv3d->viewmat);
 	
-	/* dont alloc in threads */
-	if (engine->text == NULL)
-		engine->text = MEM_callocN(IMA_MAX_RENDER_TEXT, "rendertext");
+	/* clear info text */
+	engine->text[0] = '\0';
 	
 	/* setup job */
 	WM_jobs_customdata_set(wm_job, rp, render_view3d_free);

Modified: trunk/blender/source/blender/render/extern/include/RE_engine.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_engine.h	2013-07-12 20:15:22 UTC (rev 58202)
+++ trunk/blender/source/blender/render/extern/include/RE_engine.h	2013-07-12 20:31:30 UTC (rev 58203)
@@ -107,7 +107,7 @@
 
 	struct Render *re;
 	ListBase fullresult;
-	char *text;
+	char text[512]; /* IMA_MAX_RENDER_TEXT */
 
 	int resolution_x, resolution_y;
 

Modified: trunk/blender/source/blender/render/intern/source/external_engine.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/external_engine.c	2013-07-12 20:15:22 UTC (rev 58202)
+++ trunk/blender/source/blender/render/intern/source/external_engine.c	2013-07-12 20:31:30 UTC (rev 58203)
@@ -158,9 +158,6 @@
 		BLI_end_threaded_malloc();
 	}
 
-	if (engine->text)
-		MEM_freeN(engine->text);
-
 	MEM_freeN(engine);
 }
 
@@ -307,17 +304,14 @@
 	}
 
 	/* set engine text */
-	if (engine->text) {
-		MEM_freeN(engine->text);
-		engine->text = NULL;
-	}
+	engine->text[0] = '\0';
 
 	if (stats && stats[0] && info && info[0])
-		engine->text = BLI_sprintfN("%s | %s", stats, info);
+		BLI_snprintf(engine->text, sizeof(engine->text), "%s | %s", stats, info);
 	else if (info && info[0])
-		engine->text = BLI_strdup(info);
+		BLI_strncpy(engine->text, info, sizeof(engine->text));
 	else if (stats && stats[0])
-		engine->text = BLI_strdup(stats);
+		BLI_strncpy(engine->text, info, sizeof(engine->text));
 }
 
 void RE_engine_update_progress(RenderEngine *engine, float progress)




More information about the Bf-blender-cvs mailing list