SDL: More "Integer overflow generates Illegal instruction under sanitizers" (see bug #4995) (2a244)

From 2a24418bd3eede003a0443dfd493ceed1912f788 Mon Sep 17 00:00:00 2001
From: Sylvain <[EMAIL REDACTED]>
Date: Tue, 23 Nov 2021 09:44:37 +0100
Subject: [PATCH]  More "Integer overflow generates Illegal instruction under
 sanitizers" (see bug #4995)

---
 src/render/metal/SDL_render_metal.m | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/render/metal/SDL_render_metal.m b/src/render/metal/SDL_render_metal.m
index e4dd590f584..00e5de9cbd3 100644
--- a/src/render/metal/SDL_render_metal.m
+++ b/src/render/metal/SDL_render_metal.m
@@ -1084,7 +1084,7 @@ - (void)dealloc
 static int
 METAL_QueueDrawPoints(SDL_Renderer * renderer, SDL_RenderCommand *cmd, const SDL_FPoint * points, int count)
 {
-    const int color = (cmd->data.draw.r << 0) | (cmd->data.draw.g << 8) | (cmd->data.draw.b << 16) | (cmd->data.draw.a << 24);
+    const int color = (cmd->data.draw.r << 0) | (cmd->data.draw.g << 8) | (cmd->data.draw.b << 16) | ((Uint32)cmd->data.draw.a << 24);
     const size_t vertlen = (2 * sizeof (float) + sizeof (int)) * count;
     float *verts = (float *) SDL_AllocateRenderVertices(renderer, vertlen, DEVICE_ALIGN(8), &cmd->data.draw.first);
     if (!verts) {
@@ -1104,7 +1104,7 @@ - (void)dealloc
 METAL_QueueDrawLines(SDL_Renderer * renderer, SDL_RenderCommand *cmd, const SDL_FPoint * points, int count)
 {
 
-    const int color = (cmd->data.draw.r << 0) | (cmd->data.draw.g << 8) | (cmd->data.draw.b << 16) | (cmd->data.draw.a << 24);
+    const int color = (cmd->data.draw.r << 0) | (cmd->data.draw.g << 8) | (cmd->data.draw.b << 16) | ((Uint32)cmd->data.draw.a << 24);
 
     SDL_assert(count >= 2);  /* should have been checked at the higher level. */