Quellcode durchsuchen

Mir: Fixed crash if allocating memory for cursor failed.

Philipp Wiesemann vor 9 Jahren
Ursprung
Commit
92209c260d
1 geänderte Dateien mit 13 neuen und 1 gelöschten Zeilen
  1. 13 1
      src/video/mir/SDL_mirmouse.c

+ 13 - 1
src/video/mir/SDL_mirmouse.c

@@ -59,6 +59,8 @@ MIR_CreateDefaultCursor()
         }
         else {
             SDL_OutOfMemory();
+            SDL_free(cursor);
+            cursor = NULL;
         }
     }
     else {
@@ -108,7 +110,13 @@ MIR_CreateCursor(SDL_Surface* surface, int hot_x, int hot_y)
 
     MIR_Data* mir_data     = (MIR_Data*)SDL_GetVideoDevice()->driverdata;
     SDL_Cursor* cursor     = MIR_CreateDefaultCursor();
-    MIR_Cursor* mir_cursor = (MIR_Cursor*)cursor->driverdata;
+    MIR_Cursor* mir_cursor;
+
+    if (!cursor) {
+        return NULL;
+    }
+
+    mir_cursor = (MIR_Cursor*)cursor->driverdata;
 
     stream = MIR_mir_connection_create_buffer_stream_sync(mir_data->connection,
                                                           s_w, s_h, mir_data->pixel_format,
@@ -132,6 +140,10 @@ MIR_CreateSystemCursor(SDL_SystemCursor id)
     MirCursorConfiguration* conf;
     SDL_Cursor* cursor = MIR_CreateDefaultCursor();
 
+    if (!cursor) {
+        return NULL;
+    }
+
     switch(id) {
         case SDL_SYSTEM_CURSOR_ARROW:
             cursor_name = MIR_mir_arrow_cursor_name;