diff options
author | Brecht Van Lommel <brecht@blender.org> | 2020-08-14 14:42:33 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2020-08-14 17:49:22 +0300 |
commit | d958ab62e760641056a56eb6521077556018a4b8 (patch) | |
tree | 2fde92524e9016abceb9ae9eeccee1a3da9f36af /source/blender/render/intern | |
parent | 690d76c6244d1e423c570fb0b1918619fd76b6aa (diff) |
Fix NULL pointer access in render engine reported by address sanitizer
This may not have caused an actual bug.
Diffstat (limited to 'source/blender/render/intern')
-rw-r--r-- | source/blender/render/intern/source/external_engine.c | 25 |
1 files changed, 12 insertions, 13 deletions
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) |