diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-04-13 16:12:54 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-04-13 16:12:54 +0400 |
commit | 44258c3c9a7e279832e8b01975f9ba7b91e15688 (patch) | |
tree | 2df1840660a382b9985bc7a0b3ab8af25537ff45 | |
parent | 3578a93eb830002b41925a769e180bad77764ed2 (diff) |
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.
-rw-r--r-- | source/blender/editors/render/render_preview.c | 23 |
1 files 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; } |