[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56296] trunk/blender/source/blender/ render/intern/source: Fix freestyle crash due to freed memory access.
Brecht Van Lommel
brechtvanlommel at pandora.be
Thu Apr 25 17:59:16 CEST 2013
Revision: 56296
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56296
Author: blendix
Date: 2013-04-25 15:59:15 +0000 (Thu, 25 Apr 2013)
Log Message:
-----------
Fix freestyle crash due to freed memory access. The render data needs to be
freed first, and then the scene that it used.
Modified Paths:
--------------
trunk/blender/source/blender/render/intern/source/convertblender.c
trunk/blender/source/blender/render/intern/source/pipeline.c
Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c 2013-04-25 14:29:19 UTC (rev 56295)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c 2013-04-25 15:59:15 UTC (rev 56296)
@@ -4862,12 +4862,14 @@
if (re->wrld.aosphere) {
MEM_freeN(re->wrld.aosphere);
re->wrld.aosphere= NULL;
- re->scene->world->aosphere= NULL;
+ if (re->scene)
+ re->scene->world->aosphere= NULL;
}
if (re->wrld.aotables) {
MEM_freeN(re->wrld.aotables);
re->wrld.aotables= NULL;
- re->scene->world->aotables= NULL;
+ if (re->scene)
+ re->scene->world->aotables= NULL;
}
if (re->r.mode & R_RAYTRACE)
free_render_qmcsampler(re);
Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c 2013-04-25 14:29:19 UTC (rev 56295)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c 2013-04-25 15:59:15 UTC (rev 56296)
@@ -1676,14 +1676,16 @@
static void free_all_freestyle_renders(void)
{
Render *re1, *freestyle_render;
+ Scene *freestyle_scene;
LinkData *link;
for (re1= RenderGlobal.renderlist.first; re1; re1= re1->next) {
for (link = (LinkData *)re1->freestyle_renders.first; link; link = link->next) {
if (link->data) {
freestyle_render = (Render *)link->data;
- BKE_scene_unlink(&re1->freestyle_bmain, freestyle_render->scene, NULL);
+ freestyle_scene = freestyle_render->scene;
RE_FreeRender(freestyle_render);
+ BKE_scene_unlink(&re1->freestyle_bmain, freestyle_scene, NULL);
}
}
BLI_freelistN(&re1->freestyle_renders);
More information about the Bf-blender-cvs
mailing list