Преглед на файлове

Fixed crash if a clipboard event was sent with video uninitialized

This can happen if you're using SDL on Android without using the video subsystem.

(cherry picked from commit 855d28e97aff349474ddba02d1d6a7a98a17bb1b)
Sam Lantinga преди 10 месеца
родител
ревизия
ee371ff740
променени са 1 файла, в които са добавени 10 реда и са изтрити 4 реда
  1. 10 4
      src/video/SDL_clipboard.c

+ 10 - 4
src/video/SDL_clipboard.c

@@ -42,6 +42,10 @@ void SDL_CancelClipboardData(Uint32 sequence)
 {
 {
     SDL_VideoDevice *_this = SDL_GetVideoDevice();
     SDL_VideoDevice *_this = SDL_GetVideoDevice();
 
 
+    if (!_this) {
+        return;
+    }
+
     if (sequence && sequence != _this->clipboard_sequence) {
     if (sequence && sequence != _this->clipboard_sequence) {
         // This clipboard data was already canceled
         // This clipboard data was already canceled
         return;
         return;
@@ -62,6 +66,10 @@ bool SDL_SaveClipboardMimeTypes(const char **mime_types, size_t num_mime_types)
 {
 {
     SDL_VideoDevice *_this = SDL_GetVideoDevice();
     SDL_VideoDevice *_this = SDL_GetVideoDevice();
 
 
+    if (!_this) {
+        return SDL_UninitializedVideo();
+    }
+
     SDL_FreeClipboardMimeTypes(_this);
     SDL_FreeClipboardMimeTypes(_this);
 
 
     if (mime_types && num_mime_types > 0) {
     if (mime_types && num_mime_types > 0) {
@@ -234,13 +242,11 @@ bool SDL_HasClipboardData(const char *mime_type)
     SDL_VideoDevice *_this = SDL_GetVideoDevice();
     SDL_VideoDevice *_this = SDL_GetVideoDevice();
 
 
     if (!_this) {
     if (!_this) {
-        SDL_UninitializedVideo();
-        return false;
+        return SDL_UninitializedVideo();
     }
     }
 
 
     if (!mime_type) {
     if (!mime_type) {
-        SDL_InvalidParamError("mime_type");
-        return false;
+        return SDL_InvalidParamError("mime_type");
     }
     }
 
 
     if (_this->HasClipboardData) {
     if (_this->HasClipboardData) {