Fixed unaligned 16-bit memory access

The previous code technically works on platforms with SSE2, but this fixes an ubsan warning.
This commit is contained in:
Sam Lantinga
2026-04-02 14:08:20 -07:00
parent 03f74f3ad3
commit e21f7d77f3

View File

@@ -1499,8 +1499,17 @@ static bool SDL_TARGETING("sse2") SDL_ConvertPixels_SwapNV_SSE2(int width, int h
dstUV += 8;
x -= 8;
}
while (x--) {
*dstUV++ = SDL_Swap16(*srcUV++);
if (x > 0) {
const Uint8 *srcUV8 = (const Uint8 *)srcUV;
Uint8 *dstUV8 = (Uint8 *)dstUV;
srcUV += x;
dstUV += x;
while (x--) {
Uint8 u = *srcUV8++;
Uint8 v = *srcUV8++;
*dstUV8++ = v;
*dstUV8++ = u;
}
}
srcUV += srcUVPitchLeft;
dstUV += dstUVPitchLeft;