From d958ab62e760641056a56eb6521077556018a4b8 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 14 Aug 2020 13:42:33 +0200 Subject: Fix NULL pointer access in render engine reported by address sanitizer This may not have caused an actual bug. --- .../blender/render/intern/source/external_engine.c | 25 +++++++++++----------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'source/blender/render') diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c index 075202e8a79..0790d40d56c 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -513,15 +513,15 @@ void RE_engine_active_view_set(RenderEngine *engine, const char *viewname) float RE_engine_get_camera_shift_x(RenderEngine *engine, Object *camera, bool use_spherical_stereo) { - Render *re = engine->re; - /* When using spherical stereo, get camera shift without multiview, * leaving stereo to be handled by the engine. */ - if (use_spherical_stereo) { - re = NULL; + Render *re = engine->re; + if (use_spherical_stereo || re == NULL) { + return BKE_camera_multiview_shift_x(NULL, camera, NULL); + } + else { + return BKE_camera_multiview_shift_x(&re->r, camera, re->viewname); } - - return BKE_camera_multiview_shift_x(re ? &re->r : NULL, camera, re->viewname); } void RE_engine_get_camera_model_matrix(RenderEngine *engine, @@ -529,16 +529,15 @@ void RE_engine_get_camera_model_matrix(RenderEngine *engine, bool use_spherical_stereo, float *r_modelmat) { - Render *re = engine->re; - /* When using spherical stereo, get model matrix without multiview, * leaving stereo to be handled by the engine. */ - if (use_spherical_stereo) { - re = NULL; + Render *re = engine->re; + if (use_spherical_stereo || re == NULL) { + BKE_camera_multiview_model_matrix(NULL, camera, NULL, (float(*)[4])r_modelmat); + } + else { + BKE_camera_multiview_model_matrix(&re->r, camera, re->viewname, (float(*)[4])r_modelmat); } - - BKE_camera_multiview_model_matrix( - re ? &re->r : NULL, camera, re->viewname, (float(*)[4])r_modelmat); } bool RE_engine_get_spherical_stereo(RenderEngine *engine, Object *camera) -- cgit v1.2.3