From dcadd23ba14d7c70e9b790fecd90385626efa050 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 20 Jan 2025 15:38:09 -0500 Subject: [PATCH] render: Prevent division by zero if logical presentation is 0 pixels. --- src/render/SDL_render.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c index eed8415613..9c24d559a4 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -2571,7 +2571,12 @@ static void UpdateLogicalPresentation(SDL_Renderer *renderer) renderer->logical_src_rect.w = logical_w; renderer->logical_src_rect.h = logical_h; - if (renderer->logical_presentation_mode == SDL_LOGICAL_PRESENTATION_INTEGER_SCALE) { + if ((logical_w <= 0.0f) || (logical_h <= 0.0f)) { + renderer->logical_dst_rect.x = 0.0f; + renderer->logical_dst_rect.y = 0.0f; + renderer->logical_dst_rect.w = output_w; + renderer->logical_dst_rect.h = output_h; + } else if (renderer->logical_presentation_mode == SDL_LOGICAL_PRESENTATION_INTEGER_SCALE) { float scale; if (want_aspect > real_aspect) { scale = (float)((int)output_w / (int)logical_w); // This an integer division! @@ -2635,8 +2640,8 @@ static void UpdateLogicalPresentation(SDL_Renderer *renderer) } } - renderer->main_view.logical_scale.x = (logical_w != 0.0f) ? renderer->logical_dst_rect.w / logical_w : 0.0f; - renderer->main_view.logical_scale.y = (logical_h != 0.0f) ? renderer->logical_dst_rect.h / logical_h : 0.0f; + renderer->main_view.logical_scale.x = (logical_w > 0.0f) ? renderer->logical_dst_rect.w / logical_w : 0.0f; + renderer->main_view.logical_scale.y = (logical_h > 0.0f) ? renderer->logical_dst_rect.h / logical_h : 0.0f; renderer->main_view.current_scale.x = renderer->main_view.scale.x * renderer->main_view.logical_scale.x; renderer->main_view.current_scale.y = renderer->main_view.scale.y * renderer->main_view.logical_scale.y; renderer->main_view.logical_offset.x = renderer->logical_dst_rect.x;