sdl2-compat: fix(events): tolerate nullptr for event on peep

From 00302da89ecc9270ebe4c6e9949a199f9826e85d Mon Sep 17 00:00:00 2001
From: skryvel <[EMAIL REDACTED]>
Date: Sat, 1 Feb 2025 15:22:38 -0300
Subject: [PATCH] fix(events): tolerate nullptr for event on peep

---
 src/sdl2_compat.c | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index 6a25e4c..98f9bce 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -1816,26 +1816,37 @@ SDL_DECLSPEC int SDLCALL
 SDL_PeepEvents(SDL2_Event *events2, int numevents, SDL_eventaction action, Uint32 minType, Uint32 maxType)
 {
     int isstack = 0;
-    SDL_Event *events3 = SDL3_small_alloc(SDL_Event, numevents ? numevents : 1, &isstack);
+    SDL_Event *events3 = NULL;
     int retval = 0;
     int i;
 
-    if (!events3) {
-        return -1;
+    // For GET/PEEK the event may be NULL, so avoid allocation.
+    if (events2) {
+        events3 = SDL3_small_alloc(SDL_Event, numevents ? numevents : 1, &isstack);
+        if (!events3) {
+            return -1;
+        }
     }
     if (action == SDL_ADDEVENT) {
-        for (i = 0; i < numevents; i++) {
-            Event2to3(&events2[i], &events3[i]);
+        if (events2 && events3) {
+            for (i = 0; i < numevents; i++) {
+                Event2to3(&events2[i], &events3[i]);
+            }
         }
         retval = SDL3_PeepEvents(events3, numevents, action, minType, maxType);
     } else {  /* SDL2 assumes it's SDL_PEEKEVENT if it isn't SDL_ADDEVENT or SDL_GETEVENT. */
         retval = SDL3_PeepEvents(events3, numevents, action, minType, maxType);
-        for (i = 0; i < retval; i++) {
-            Event3to2(&events3[i], &events2[i]);
+        if (events3) {
+            for (i = 0; i < retval; i++) {
+                Event3to2(&events3[i], &events2[i]);
+            }
         }
     }
 
-    SDL3_small_free(events3, isstack);
+    if (events3) {
+        SDL3_small_free(events3, isstack);
+    }
+
     return retval;
 }