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:
authorBastien Montagne <montagne29@wanadoo.fr>2015-04-10 13:32:19 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2015-04-10 13:32:19 +0300
commit1e71270f77a4e1c7c84b871e5378c659d61edb3e (patch)
tree2a32d112ab58acb1aaff6f60716a44de2a5c30a3 /source/blender/render
parent253d15ea16a90af1c2ac28d933b73fe7576e0315 (diff)
Fix T44329: Blender Crash when rendering in 3DView.
This commit fixes two different issues actually: * When view name is unknown/irrelevant, you should pass a NULL str pointer to `RE_RenderLayerGetPass()`, not an empty string! * `render_result_rescale()` would unconditionnaly free re->result (at the end), even if it did not replaced it at all, leading to freed memory access later. This is only a partial fix though, "CacheBuffer" (i.e. saving tiles in EXR files) shall not be used in 3DView rendering, and yet it is here...
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/intern/source/pipeline.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index cd7940e52c8..db3499b4180 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -202,7 +202,7 @@ float *RE_RenderLayerGetPass(volatile RenderLayer *rl, int passtype, const char
if (viewname == NULL)
break;
- else if (strcmp(rpass->view, viewname) == 0)
+ else if (STREQ(rpass->view, viewname))
break;
}
}
@@ -776,7 +776,7 @@ static void render_result_rescale(Render *re)
if (src_rectf == NULL) {
RenderLayer *rl = render_get_active_layer(re, re->result);
if (rl != NULL) {
- src_rectf = RE_RenderLayerGetPass(rl, SCE_PASS_COMBINED, "");
+ src_rectf = RE_RenderLayerGetPass(rl, SCE_PASS_COMBINED, NULL);
}
}
@@ -795,7 +795,7 @@ static void render_result_rescale(Render *re)
RenderLayer *rl;
rl = render_get_active_layer(re, re->result);
if (rl != NULL) {
- dst_rectf = RE_RenderLayerGetPass(rl, SCE_PASS_COMBINED, "");
+ dst_rectf = RE_RenderLayerGetPass(rl, SCE_PASS_COMBINED, NULL);
}
}
@@ -812,9 +812,8 @@ static void render_result_rescale(Render *re)
}
}
}
+ render_result_free(result);
}
-
- render_result_free(result);
}
void RE_ChangeResolution(Render *re, int winx, int winy, rcti *disprect)