diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-02-05 12:16:04 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-02-05 12:16:04 +0400 |
commit | 791e38afd2637134f4fea1ad8a8cfb48317bbc86 (patch) | |
tree | 5330bc6073edc8229702e8d545b05295a1338926 /source/blender | |
parent | 2c0a3cf42ee3800b783d1c82a82658984161aa64 (diff) |
fix [#34105] bake artifacts
different threads could allocate the mask buffer and overwrite the same pointer, regression since 2.65
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/render/intern/source/bake.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/render/intern/source/bake.c b/source/blender/render/intern/source/bake.c index 0ac88c3f5b0..f36cd0f48c7 100644 --- a/source/blender/render/intern/source/bake.c +++ b/source/blender/render/intern/source/bake.c @@ -818,10 +818,13 @@ static void shade_tface(BakeShade *bs) BLI_lock_thread(LOCK_CUSTOM1); userdata = bs->ibuf->userdata; if (userdata == NULL) /* since the thread was locked, its possible another thread alloced the value */ - userdata = MEM_callocN(sizeof(BakeImBufuserData), "BakeMask"); + userdata = MEM_callocN(sizeof(BakeImBufuserData), STRINGIFY(BakeImBufuserData)); - if (bs->use_mask) - userdata->mask_buffer = MEM_callocN(sizeof(char) * bs->rectx * bs->recty, "BakeMask"); + if (bs->use_mask) { + if (userdata->mask_buffer == NULL) { + userdata->mask_buffer = MEM_callocN(sizeof(char) * bs->rectx * bs->recty, "BakeMask"); + } + } if (bs->use_displacement_buffer) userdata->displacement_buffer = MEM_callocN(sizeof(float) * bs->rectx * bs->recty, "BakeDisp"); |