From 9e5cbf034a603473ef209593c9db57cefcb37dd7 Mon Sep 17 00:00:00 2001
From: Eddy Jansson <[EMAIL REDACTED]>
Date: Fri, 29 Apr 2022 22:36:12 +0200
Subject: [PATCH] Disallow non-positive allocation.
Ensure that we're not trying to call SDL_small_alloc()
with a count of zero.
Transforming the code like this fixes a
-Wmaybe-uninitialized warning from GCC 12.0.1
---
src/render/SDL_render.c | 26 ++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c
index 58cda3d6022..d94b0a988b0 100644
--- a/src/render/SDL_render.c
+++ b/src/render/SDL_render.c
@@ -2670,11 +2670,16 @@ static int
RenderDrawPointsWithRects(SDL_Renderer * renderer,
const SDL_Point * points, const int count)
{
- int retval = -1;
+ int retval;
SDL_bool isstack;
- SDL_FRect *frects = SDL_small_alloc(SDL_FRect, count, &isstack);
+ SDL_FRect *frects;
int i;
+ if (count < 1) {
+ return 0;
+ }
+
+ frects = SDL_small_alloc(SDL_FRect, count, &isstack);
if (!frects) {
return SDL_OutOfMemory();
}
@@ -2686,9 +2691,7 @@ RenderDrawPointsWithRects(SDL_Renderer * renderer,
frects[i].h = renderer->scale.y;
}
- if (count) {
- retval = QueueCmdFillRects(renderer, frects, count);
- }
+ retval = QueueCmdFillRects(renderer, frects, count);
SDL_small_free(frects, isstack);
@@ -2743,11 +2746,16 @@ static int
RenderDrawPointsWithRectsF(SDL_Renderer * renderer,
const SDL_FPoint * fpoints, const int count)
{
- int retval = -1;
+ int retval;
SDL_bool isstack;
- SDL_FRect *frects = SDL_small_alloc(SDL_FRect, count, &isstack);
+ SDL_FRect *frects;
int i;
+ if (count < 1) {
+ return 0;
+ }
+
+ frects = SDL_small_alloc(SDL_FRect, count, &isstack);
if (!frects) {
return SDL_OutOfMemory();
}
@@ -2759,9 +2767,7 @@ RenderDrawPointsWithRectsF(SDL_Renderer * renderer,
frects[i].h = renderer->scale.y;
}
- if (count) {
- retval = QueueCmdFillRects(renderer, frects, count);
- }
+ retval = QueueCmdFillRects(renderer, frects, count);
SDL_small_free(frects, isstack);