From 83fb7b6636d9ebfc45152abadefd4fc1fc42cffc Mon Sep 17 00:00:00 2001
From: Eddy Jansson <[EMAIL REDACTED]>
Date: Fri, 23 Jan 2026 19:42:06 +0100
Subject: [PATCH] Prefer SDL_zero()/SDL_zerop()
Replace uses of 'SDL_memset(E, 0, sizeof(E))' and similar
with the SDL_zero()/SDL_zerop() macros.
---
src/SDL_guid.c | 2 +-
src/core/linux/SDL_ibus.c | 2 +-
src/gpu/vulkan/SDL_gpu_vulkan.c | 6 +++---
src/haptic/darwin/SDL_syshaptic.c | 2 +-
src/haptic/hidapi/SDL_hidapihaptic_lg4ff.c | 6 +++---
src/haptic/windows/SDL_dinputhaptic.c | 2 +-
src/joystick/hidapi/SDL_hidapi_gip.c | 2 +-
src/joystick/hidapi/SDL_hidapi_switch.c | 2 +-
src/render/vitagxm/SDL_render_vita_gxm.c | 2 +-
src/render/vitagxm/SDL_render_vita_gxm_tools.c | 10 +++++-----
src/render/vulkan/SDL_render_vulkan.c | 4 ++--
src/video/vita/SDL_vitaframebuffer.c | 2 +-
src/video/vita/SDL_vitavideo.c | 4 ++--
src/video/wayland/SDL_waylanddatamanager.c | 2 +-
src/video/wayland/SDL_waylandevents.c | 2 +-
src/video/x11/SDL_x11events.c | 8 ++++----
src/video/x11/SDL_x11window.c | 2 +-
17 files changed, 30 insertions(+), 30 deletions(-)
diff --git a/src/SDL_guid.c b/src/SDL_guid.c
index dd5bc43408daf..913206a560558 100644
--- a/src/SDL_guid.c
+++ b/src/SDL_guid.c
@@ -77,7 +77,7 @@ SDL_GUID SDL_StringToGUID(const char *pchGUID)
// Make sure it's even
len = (len) & ~0x1;
- SDL_memset(&guid, 0x00, sizeof(guid));
+ SDL_zero(guid);
p = (Uint8 *)&guid;
for (i = 0; (i < len) && ((p - (Uint8 *)&guid) < maxoutputbytes); i += 2, p++) {
diff --git a/src/core/linux/SDL_ibus.c b/src/core/linux/SDL_ibus.c
index e018d1042777e..9e5e1e7fd53c6 100644
--- a/src/core/linux/SDL_ibus.c
+++ b/src/core/linux/SDL_ibus.c
@@ -637,7 +637,7 @@ void SDL_IBus_Quit(void)
SDL_RemoveHintCallback(SDL_HINT_IME_IMPLEMENTED_UI, IBus_SetCapabilities, NULL);
- SDL_memset(&ibus_cursor_rect, 0, sizeof(ibus_cursor_rect));
+ SDL_zero(ibus_cursor_rect);
}
static void IBus_SimpleMessage(const char *method)
diff --git a/src/gpu/vulkan/SDL_gpu_vulkan.c b/src/gpu/vulkan/SDL_gpu_vulkan.c
index c395a87755323..e87b5eec9b198 100644
--- a/src/gpu/vulkan/SDL_gpu_vulkan.c
+++ b/src/gpu/vulkan/SDL_gpu_vulkan.c
@@ -11653,9 +11653,9 @@ static void VULKAN_INTERNAL_AddOptInVulkanOptions(SDL_PropertiesID props, Vulkan
features->usesCustomVulkanOptions = true;
features->desiredApiVersion = options->vulkan_api_version;
- SDL_memset(&features->desiredVulkan11DeviceFeatures, 0, sizeof(VkPhysicalDeviceVulkan11Features));
- SDL_memset(&features->desiredVulkan12DeviceFeatures, 0, sizeof(VkPhysicalDeviceVulkan12Features));
- SDL_memset(&features->desiredVulkan13DeviceFeatures, 0, sizeof(VkPhysicalDeviceVulkan13Features));
+ SDL_zero(features->desiredVulkan11DeviceFeatures);
+ SDL_zero(features->desiredVulkan12DeviceFeatures);
+ SDL_zero(features->desiredVulkan13DeviceFeatures);
features->desiredVulkan11DeviceFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
features->desiredVulkan12DeviceFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
features->desiredVulkan13DeviceFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c
index 21bcea04ed0ec..7f96f7b81ed12 100644
--- a/src/haptic/darwin/SDL_syshaptic.c
+++ b/src/haptic/darwin/SDL_syshaptic.c
@@ -1166,7 +1166,7 @@ bool SDL_SYS_HapticUpdateEffect(SDL_Haptic *haptic,
FFEFFECT temp;
// Get the effect.
- SDL_memset(&temp, 0, sizeof(FFEFFECT));
+ SDL_zero(temp);
if (!SDL_SYS_ToFFEFFECT(haptic, &temp, data)) {
goto err_update;
}
diff --git a/src/haptic/hidapi/SDL_hidapihaptic_lg4ff.c b/src/haptic/hidapi/SDL_hidapihaptic_lg4ff.c
index 5cc538656a771..cfe10dda9c979 100644
--- a/src/haptic/hidapi/SDL_hidapihaptic_lg4ff.c
+++ b/src/haptic/hidapi/SDL_hidapihaptic_lg4ff.c
@@ -694,9 +694,9 @@ static int lg4ff_init_slots(struct lg4ff_device *device)
return -1;
}
- SDL_memset(&device->states, 0, sizeof(device->states));
- SDL_memset(&device->slots, 0, sizeof(device->slots));
- SDL_memset(¶meters, 0, sizeof(parameters));
+ SDL_zero(device->states);
+ SDL_zero(device->slots);
+ SDL_zero(parameters);
device->slots[0].effect_type = SDL_HAPTIC_CONSTANT;
device->slots[1].effect_type = SDL_HAPTIC_SPRING;
diff --git a/src/haptic/windows/SDL_dinputhaptic.c b/src/haptic/windows/SDL_dinputhaptic.c
index ed9345b9578e6..d60f31ccb186e 100644
--- a/src/haptic/windows/SDL_dinputhaptic.c
+++ b/src/haptic/windows/SDL_dinputhaptic.c
@@ -1050,7 +1050,7 @@ bool SDL_DINPUT_HapticUpdateEffect(SDL_Haptic *haptic, struct haptic_effect *eff
DIEFFECT temp;
// Get the effect.
- SDL_memset(&temp, 0, sizeof(DIEFFECT));
+ SDL_zero(temp);
if (!SDL_SYS_ToDIEFFECT(haptic, &temp, data)) {
goto err_update;
}
diff --git a/src/joystick/hidapi/SDL_hidapi_gip.c b/src/joystick/hidapi/SDL_hidapi_gip.c
index e8a4d0a003c4e..f1536d60d6ad3 100644
--- a/src/joystick/hidapi/SDL_hidapi_gip.c
+++ b/src/joystick/hidapi/SDL_hidapi_gip.c
@@ -809,7 +809,7 @@ static void GIP_MetadataFree(GIP_Metadata *metadata)
SDL_free(metadata->device.hid_descriptor);
SDL_free(metadata->message_metadata);
- SDL_memset(metadata, 0, sizeof(*metadata));
+ SDL_zerop(metadata);
}
static bool GIP_ParseDeviceMetadata(GIP_Metadata *metadata, const Uint8 *bytes, int num_bytes, int *offset)
diff --git a/src/joystick/hidapi/SDL_hidapi_switch.c b/src/joystick/hidapi/SDL_hidapi_switch.c
index a444ca7c3fb67..69e74a852ccfb 100644
--- a/src/joystick/hidapi/SDL_hidapi_switch.c
+++ b/src/joystick/hidapi/SDL_hidapi_switch.c
@@ -450,7 +450,7 @@ static bool ReadProprietaryReply(SDL_DriverSwitch_Context *ctx, ESwitchProprieta
static void ConstructSubcommand(SDL_DriverSwitch_Context *ctx, ESwitchSubcommandIDs ucCommandID, const Uint8 *pBuf, Uint8 ucLen, SwitchSubcommandOutputPacket_t *outPacket)
{
- SDL_memset(outPacket, 0, sizeof(*outPacket));
+ SDL_zerop(outPacket);
outPacket->commonData.ucPacketType = k_eSwitchOutputReportIDs_RumbleAndSubcommand;
outPacket->commonData.ucPacketNumber = ctx->m_nCommandNumber;
diff --git a/src/render/vitagxm/SDL_render_vita_gxm.c b/src/render/vitagxm/SDL_render_vita_gxm.c
index 2a590607ec2ef..7c4f2ebc8f95b 100644
--- a/src/render/vitagxm/SDL_render_vita_gxm.c
+++ b/src/render/vitagxm/SDL_render_vita_gxm.c
@@ -1140,7 +1140,7 @@ static bool VITA_GXM_RenderPresent(SDL_Renderer *renderer)
data->displayData.address = data->displayBufferData[data->backBufferIndex];
- SDL_memset(&updateParam, 0, sizeof(updateParam));
+ SDL_zero(updateParam);
updateParam.renderTarget.colorFormat = VITA_GXM_COLOR_FORMAT;
updateParam.renderTarget.surfaceType = SCE_GXM_COLOR_SURFACE_LINEAR;
diff --git a/src/render/vitagxm/SDL_render_vita_gxm_tools.c b/src/render/vitagxm/SDL_render_vita_gxm_tools.c
index 791b263bd5263..aaa0eb04256b1 100644
--- a/src/render/vitagxm/SDL_render_vita_gxm_tools.c
+++ b/src/render/vitagxm/SDL_render_vita_gxm_tools.c
@@ -138,7 +138,7 @@ static void display_callback(const void *callback_data)
SceDisplayFrameBuf framebuf;
const VITA_GXM_DisplayData *display_data = (const VITA_GXM_DisplayData *)callback_data;
- SDL_memset(&framebuf, 0x00, sizeof(SceDisplayFrameBuf));
+ SDL_zero(framebuf);
framebuf.size = sizeof(SceDisplayFrameBuf);
framebuf.base = display_data->address;
framebuf.pitch = VITA_GXM_SCREEN_STRIDE;
@@ -377,7 +377,7 @@ int gxm_init(SDL_Renderer *renderer)
VITA_GXM_RenderData *data = (VITA_GXM_RenderData *)renderer->internal;
SceGxmInitializeParams initializeParams;
- SDL_memset(&initializeParams, 0, sizeof(SceGxmInitializeParams));
+ SDL_zero(initializeParams);
initializeParams.flags = 0;
initializeParams.displayQueueMaxPendingCount = VITA_GXM_PENDING_SWAPS;
initializeParams.displayQueueCallback = display_callback;
@@ -438,7 +438,7 @@ int gxm_init(SDL_Renderer *renderer)
}
// set up parameters
- SDL_memset(&renderTargetParams, 0, sizeof(SceGxmRenderTargetParams));
+ SDL_zero(renderTargetParams);
renderTargetParams.flags = 0;
renderTargetParams.width = VITA_GXM_SCREEN_WIDTH;
renderTargetParams.height = VITA_GXM_SCREEN_HEIGHT;
@@ -555,7 +555,7 @@ int gxm_init(SDL_Renderer *renderer)
&patcherFragmentUsseOffset);
// create a shader patcher
- SDL_memset(&patcherParams, 0, sizeof(SceGxmShaderPatcherParams));
+ SDL_zero(patcherParams);
patcherParams.userData = NULL;
patcherParams.hostAllocCallback = &patcher_host_alloc;
patcherParams.hostFreeCallback = &patcher_host_free;
@@ -1097,7 +1097,7 @@ gxm_texture *create_gxm_texture(VITA_GXM_RenderData *data, unsigned int w, unsig
// set up parameters
SceGxmRenderTargetParams renderTargetParams;
- SDL_memset(&renderTargetParams, 0, sizeof(SceGxmRenderTargetParams));
+ SDL_zero(renderTargetParams);
renderTargetParams.flags = 0;
renderTargetParams.width = w;
renderTargetParams.height = h;
diff --git a/src/render/vulkan/SDL_render_vulkan.c b/src/render/vulkan/SDL_render_vulkan.c
index c20eecd8e651c..4f04c8467b6f0 100644
--- a/src/render/vulkan/SDL_render_vulkan.c
+++ b/src/render/vulkan/SDL_render_vulkan.c
@@ -1231,7 +1231,7 @@ static VULKAN_PipelineState *VULKAN_CreatePipelineState(SDL_Renderer *renderer,
// Shaders
const char *name = "main";
for (uint32_t i = 0; i < 2; i++) {
- SDL_memset(&shaderStageCreateInfo[i], 0, sizeof(shaderStageCreateInfo[i]));
+ SDL_zero(shaderStageCreateInfo[i]);
shaderStageCreateInfo[i].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
shaderStageCreateInfo[i].module = (i == 0) ? rendererData->vertexShaderModules[shader] : rendererData->fragmentShaderModules[shader];
shaderStageCreateInfo[i].stage = (i == 0) ? VK_SHADER_STAGE_VERTEX_BIT : VK_SHADER_STAGE_FRAGMENT_BIT;
@@ -4034,7 +4034,7 @@ static bool VULKAN_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cm
VULKAN_RenderData *rendererData = (VULKAN_RenderData *)renderer->internal;
VkSurfaceTransformFlagBitsKHR currentRotation = VULKAN_GetRotationForCurrentRenderTarget(rendererData);
VULKAN_DrawStateCache stateCache;
- SDL_memset(&stateCache, 0, sizeof(stateCache));
+ SDL_zero(stateCache);
if (!rendererData->device) {
return SDL_SetError("Device lost and couldn't be recovered");
diff --git a/src/video/vita/SDL_vitaframebuffer.c b/src/video/vita/SDL_vitaframebuffer.c
index 6c5b009dd81c5..c7c647e1ef280 100644
--- a/src/video/vita/SDL_vitaframebuffer.c
+++ b/src/video/vita/SDL_vitaframebuffer.c
@@ -79,7 +79,7 @@ bool VITA_CreateWindowFramebuffer(SDL_VideoDevice *_this, SDL_Window *window, SD
// SDL_memset the buffer to black
SDL_memset(data->buffer, 0x0, SCREEN_W * SCREEN_H * 4);
- SDL_memset(&framebuf, 0x00, sizeof(SceDisplayFrameBuf));
+ SDL_zero(framebuf);
framebuf.size = sizeof(SceDisplayFrameBuf);
framebuf.base = data->buffer;
framebuf.pitch = SCREEN_W;
diff --git a/src/video/vita/SDL_vitavideo.c b/src/video/vita/SDL_vitavideo.c
index c0cf866895274..4efaaed6c1e07 100644
--- a/src/video/vita/SDL_vitavideo.c
+++ b/src/video/vita/SDL_vitavideo.c
@@ -387,7 +387,7 @@ void VITA_ImeEventHandler(void *arg, const SceImeEventData *e)
} else {
SDL_SendKeyboardText((const char *)utf8_buffer);
}
- SDL_memset(&caret_rev, 0, sizeof(SceImeCaret));
+ SDL_zero(caret_rev);
SDL_memset(libime_out, 0, ((SCE_IME_MAX_PREEDIT_LENGTH + SCE_IME_MAX_TEXT_LENGTH + 1) * sizeof(SceWChar16)));
caret_rev.index = 1;
sceImeSetCaret(&caret_rev);
@@ -553,7 +553,7 @@ void VITA_PumpEvents(SDL_VideoDevice *_this)
uint8_t utf8_buffer[SCE_IME_DIALOG_MAX_TEXT_LENGTH];
SceImeDialogResult result;
- SDL_memset(&result, 0, sizeof(SceImeDialogResult));
+ SDL_zero(result);
sceImeDialogGetResult(&result);
// Convert UTF16 to UTF8
diff --git a/src/video/wayland/SDL_waylanddatamanager.c b/src/video/wayland/SDL_waylanddatamanager.c
index 63b6b359d3a99..e4a040a817262 100644
--- a/src/video/wayland/SDL_waylanddatamanager.c
+++ b/src/video/wayland/SDL_waylanddatamanager.c
@@ -64,7 +64,7 @@ static int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct times
if (sigismember(set, signo) && sigismember(&pending, signo)) {
if (!sigwait(set, &signo)) {
if (info) {
- SDL_memset(info, 0, sizeof *info);
+ SDL_zerop(info);
info->si_signo = signo;
}
return signo;
diff --git a/src/video/wayland/SDL_waylandevents.c b/src/video/wayland/SDL_waylandevents.c
index 436266ea4fd35..f9908b3b8bca0 100644
--- a/src/video/wayland/SDL_waylandevents.c
+++ b/src/video/wayland/SDL_waylandevents.c
@@ -2522,7 +2522,7 @@ static void seat_handle_capabilities(void *data, struct wl_seat *wl_seat, enum w
if ((capabilities & WL_SEAT_CAPABILITY_POINTER) && !seat->pointer.wl_pointer) {
seat->pointer.wl_pointer = wl_seat_get_pointer(wl_seat);
- SDL_memset(&seat->pointer.pending_frame.axis, 0, sizeof(seat->pointer.pending_frame.axis));
+ SDL_zero(seat->pointer.pending_frame.axis);
Wayland_SeatCreateCursorShape(seat);
diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c
index cea241edde760..7b0f1f5e6a583 100644
--- a/src/video/x11/SDL_x11events.c
+++ b/src/video/x11/SDL_x11events.c
@@ -1731,7 +1731,7 @@ static void X11_DispatchEvent(SDL_VideoDevice *_this, XEvent *xevent)
}
// reply with status
- SDL_memset(&m, 0, sizeof(XClientMessageEvent));
+ SDL_zero(m);
m.type = ClientMessage;
m.display = xevent->xclient.display;
m.window = xevent->xclient.data.l[0];
@@ -1748,7 +1748,7 @@ static void X11_DispatchEvent(SDL_VideoDevice *_this, XEvent *xevent)
} else if (xevent->xclient.message_type == videodata->atoms.XdndDrop) {
if (data->xdnd_req == None) {
// say again - not interested!
- SDL_memset(&m, 0, sizeof(XClientMessageEvent));
+ SDL_zero(m);
m.type = ClientMessage;
m.display = xevent->xclient.display;
m.window = xevent->xclient.data.l[0];
@@ -2175,7 +2175,7 @@ static void X11_DispatchEvent(SDL_VideoDevice *_this, XEvent *xevent)
X11_XFree(p.data);
// send reply
- SDL_memset(&m, 0, sizeof(XClientMessageEvent));
+ SDL_zero(m);
m.type = ClientMessage;
m.display = display;
m.window = data->xdnd_source;
@@ -2243,7 +2243,7 @@ void X11_SendWakeupEvent(SDL_VideoDevice *_this, SDL_Window *window)
Window xwindow = window->internal->xwindow;
XClientMessageEvent event;
- SDL_memset(&event, 0, sizeof(XClientMessageEvent));
+ SDL_zero(event);
event.type = ClientMessage;
event.display = req_display;
event.send_event = True;
diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c
index ed9026280cbd5..4a68287cc289c 100644
--- a/src/video/x11/SDL_x11window.c
+++ b/src/video/x11/SDL_x11window.c
@@ -354,7 +354,7 @@ SDL_WindowFlags X11_GetNetWMState(SDL_VideoDevice *_this, SDL_Window *window, Wi
*/
{
XWindowAttributes attr;
- SDL_memset(&attr, 0, sizeof(attr));
+ SDL_zero(attr);
X11_XGetWindowAttributes(videodata->display, xwindow, &attr);
if (attr.map_state == IsUnmapped) {
flags |= SDL_WINDOW_HIDDEN;