Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-02-05 12:16:04 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-02-05 12:16:04 +0400
commit791e38afd2637134f4fea1ad8a8cfb48317bbc86 (patch)
tree5330bc6073edc8229702e8d545b05295a1338926 /source/blender/render
parent2c0a3cf42ee3800b783d1c82a82658984161aa64 (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/render')
-rw-r--r--source/blender/render/intern/source/bake.c9
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");