diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index e8466d603a2..cab825888a1 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -2282,7 +2282,13 @@ static void shade_tface(BakeShade *bs) if (bs->usemask) { if (bs->ibuf->userdata==NULL) { - bs->ibuf->userdata = (void *)MEM_callocN(sizeof(char)*bs->rectx*bs->recty, "BakeMask"); + BLI_lock_thread(LOCK_CUSTOM1); + if (bs->ibuf->userdata==NULL) { /* since the thread was locked, its possible another thread alloced the value */ + bs->ibuf->userdata = (void *)MEM_callocN(sizeof(char)*bs->rectx*bs->recty, "BakeMask"); + bs->rect_mask= (char *)bs->ibuf->userdata; + } + BLI_unlock_thread(LOCK_CUSTOM1); + } else { bs->rect_mask= (char *)bs->ibuf->userdata; } }