From a19040c84d420d472f45ca248bb048fdbec8075b Mon Sep 17 00:00:00 2001
From: Jacul <[EMAIL REDACTED]>
Date: Sun, 5 Jul 2026 22:52:41 -0400
Subject: [PATCH] metal: check MTLBuffer allocations for nil before using their
contents.
(cherry picked from commit e1b3c8afd574e9da9638103646792d75bfee7394)
---
src/render/metal/SDL_render_metal.m | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/render/metal/SDL_render_metal.m b/src/render/metal/SDL_render_metal.m
index c8a4579182297..989809cf79b76 100644
--- a/src/render/metal/SDL_render_metal.m
+++ b/src/render/metal/SDL_render_metal.m
@@ -1564,6 +1564,9 @@ static bool SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, c
if (statecache->shader_constants_dirty ||
SDL_memcmp(shader_constants, &statecache->shader_constants, sizeof(*shader_constants)) != 0) {
id<MTLBuffer> mtlbufconstants = [data.mtldevice newBufferWithLength:sizeof(*shader_constants) options:MTLResourceStorageModeShared];
+ if (mtlbufconstants == nil) {
+ return SDL_OutOfMemory();
+ }
mtlbufconstants.label = @"SDL shader constants data";
SDL_memcpy([mtlbufconstants contents], shader_constants, sizeof(*shader_constants));
[data.mtlcmdencoder setFragmentBuffer:mtlbufconstants offset:0 atIndex:0];
@@ -1734,6 +1737,9 @@ static bool METAL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd
* practices guide recommends this approach for streamed vertex data.
*/
mtlbufvertex = [data.mtldevice newBufferWithLength:vertsize options:MTLResourceStorageModeShared];
+ if (mtlbufvertex == nil) {
+ return SDL_OutOfMemory();
+ }
mtlbufvertex.label = @"SDL vertex data";
SDL_memcpy([mtlbufvertex contents], vertices, vertsize);