metal: check MTLBuffer allocations for nil before using their contents.

This commit is contained in:
Jacul
2026-07-05 22:52:41 -04:00
committed by Ryan C. Gordon
parent 435539e66c
commit e1b3c8afd5

View File

@@ -1606,6 +1606,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];
@@ -1776,6 +1779,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);