From 44258c3c9a7e279832e8b01975f9ba7b91e15688 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 13 Apr 2012 12:12:54 +0000 Subject: Fix #30876, #30932: crash in material preview render after undo or file load, due to old material copies hanging around in the preview database. This crash happened pretty randomly, but was especially noticeable when using node groups. --- source/blender/editors/render/render_preview.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 27e1486c4f3..67ece561c98 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -987,20 +987,19 @@ static void icon_preview_startjob_all_sizes(void *customdata, short *stop, short IconPreviewSize *cur_size = ip->sizes.first; while (cur_size) { - ShaderPreview sp; - - memset(&sp, 0, sizeof(ShaderPreview)); + ShaderPreview *sp = MEM_callocN(sizeof(ShaderPreview), "Icon ShaderPreview"); /* construct shader preview from image size and previewcustomdata */ - sp.scene = ip->scene; - sp.owner = ip->owner; - sp.sizex = cur_size->sizex; - sp.sizey = cur_size->sizey; - sp.pr_method = PR_ICON_RENDER; - sp.pr_rect = cur_size->rect; - sp.id = ip->id; - - common_preview_startjob(&sp, stop, do_update, progress); + sp->scene = ip->scene; + sp->owner = ip->owner; + sp->sizex = cur_size->sizex; + sp->sizey = cur_size->sizey; + sp->pr_method = PR_ICON_RENDER; + sp->pr_rect = cur_size->rect; + sp->id = ip->id; + + common_preview_startjob(sp, stop, do_update, progress); + shader_preview_free(sp); cur_size = cur_size->next; } -- cgit v1.2.3