[Bf-blender-cvs] [1e71270] master: Fix T44329: Blender Crash when rendering in 3DView.

Bastien Montagne noreply at git.blender.org
Fri Apr 10 12:36:06 CEST 2015


Commit: 1e71270f77a4e1c7c84b871e5378c659d61edb3e
Author: Bastien Montagne
Date:   Fri Apr 10 12:32:19 2015 +0200
Branches: master
https://developer.blender.org/rB1e71270f77a4e1c7c84b871e5378c659d61edb3e

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...

===================================================================

M	source/blender/render/intern/source/pipeline.c

===================================================================

diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index cd7940e..db3499b 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)




More information about the Bf-blender-cvs mailing list