From 1275f13d6883656c102fd1aa5a3d54ff4fc1346c Mon Sep 17 00:00:00 2001 From: OBattler Date: Tue, 23 Dec 2025 00:22:00 +0100 Subject: [PATCH] (S)VGA render: Make sure the overscan is not blitted to a line whose pointer is NULL, fixes #6591. --- src/video/vid_svga_render.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/video/vid_svga_render.c b/src/video/vid_svga_render.c index 25b3cd946..f266fbf8f 100644 --- a/src/video/vid_svga_render.c +++ b/src/video/vid_svga_render.c @@ -91,7 +91,7 @@ svga_render_blank(svga_t *svga) line_width -= svga->x_add; } - if (((svga->hdisp + svga->scrollcache) > 0) && (line_width >= 0)) + if ((line_ptr != NULL) && ((svga->hdisp + svga->scrollcache) > 0) && (line_width >= 0)) memset(line_ptr, 0, line_width); } @@ -106,7 +106,7 @@ svga_render_overscan_left(svga_t *svga) uint32_t *line_ptr = svga->monitor->target_buffer->line[svga->displine + svga->y_add]; - if (svga->x_add >= 0) for (int i = 0; i < svga->x_add; i++) + if ((line_ptr != NULL) && (svga->x_add >= 0)) for (int i = 0; i < svga->x_add; i++) *line_ptr++ = svga->overscan_color; } @@ -121,10 +121,15 @@ svga_render_overscan_right(svga_t *svga) if (svga->scrblank || (svga->hdisp <= 0)) return; - uint32_t *line_ptr = &svga->monitor->target_buffer->line[svga->displine + svga->y_add][svga->x_add + svga->hdisp]; + uint32_t *line_ptr = svga->monitor->target_buffer->line[svga->displine + svga->y_add]; right = overscan_x - svga->left_overscan; - for (int i = 0; i < right; i++) - *line_ptr++ = svga->overscan_color; + + if (line_ptr != NULL) { + line_ptr += svga->x_add + svga->hdisp; + + for (int i = 0; i < right; i++) + *line_ptr++ = svga->overscan_color; + } } void