Fix T44556: Crash on the World Properties > Preview

Issue was caused by de-referencing NULL pointer, rres did not have any
views because nothing was rendered yet.

Needs more closer look about where else such a de-reference could happen.
This commit is contained in:
Sergey Sharybin 2015-04-30 14:52:59 +05:00
parent 41d817f15d
commit 4bcc7a2ec6
Notes: blender-bot 2023-02-14 09:10:53 +01:00
Referenced by commit 179fff94e8, Revert "Fix T44556: Crash on the World Properties > Preview"
Referenced by issue #44556, Crash on the World Properties > Preview
1 changed files with 8 additions and 4 deletions

View File

@ -532,6 +532,7 @@ static bool ed_preview_draw_rect(ScrArea *sa, int split, int first, rcti *rect,
int newx = BLI_rcti_size_x(rect);
int newy = BLI_rcti_size_y(rect);
bool ok = false;
bool has_rectf = false;
if (!split || first) sprintf(name, "Preview %p", (void *)sa);
else sprintf(name, "SecondPreview %p", (void *)sa);
@ -551,11 +552,14 @@ static bool ed_preview_draw_rect(ScrArea *sa, int split, int first, rcti *rect,
re = RE_GetRender(name);
RE_AcquireResultImageViews(re, &rres);
/* TODO(sergey): Is there a cleaner way to do this? */
if (!BLI_listbase_is_empty(&rres.views)) {
/* material preview only needs monoscopy (view 0) */
rv = RE_RenderViewGetById(&rres, 0);
has_rectf = rv->rectf != NULL;
}
/* material preview only needs monoscopy (view 0) */
rv = RE_RenderViewGetById(&rres, 0);
if (rv->rectf) {
if (has_rectf) {
if (ABS(rres.rectx - newx) < 2 && ABS(rres.recty - newy) < 2) {