Browse Source

Added macros to push/pop error messages while cleaning up

(cherry picked from commit 885e611f3c2f65051bb639defe398e3a1a186eb4)
Sam Lantinga 2 months ago
parent
commit
abbaf95cf0
2 changed files with 8 additions and 0 deletions
  1. 6 0
      src/SDL_internal.h
  2. 2 0
      src/video/SDL_video.c

+ 6 - 0
src/SDL_internal.h

@@ -265,6 +265,12 @@ extern "C" {
 #include "SDL_utils_c.h"
 #include "SDL_hashtable.h"
 
+#define PUSH_SDL_ERROR() \
+    { char *_error = SDL_strdup(SDL_GetError());
+
+#define POP_SDL_ERROR() \
+    SDL_SetError("%s", _error); SDL_free(_error); }
+
 // Do any initialization that needs to happen before threads are started
 extern void SDL_InitMainThread(void);
 

+ 2 - 0
src/video/SDL_video.c

@@ -2513,7 +2513,9 @@ SDL_Window *SDL_CreateWindowWithProperties(SDL_PropertiesID props)
     SDL_UpdateWindowHierarchy(window, parent);
 
     if (_this->CreateSDLWindow && !_this->CreateSDLWindow(_this, window, props)) {
+        PUSH_SDL_ERROR()
         SDL_DestroyWindow(window);
+        POP_SDL_ERROR()
         return NULL;
     }