浏览代码

Fixed SDL_AddHintCallback() crashing if no more memory available.

The return value of SDL_malloc() was not checked and NULL therefore not handled.
Also added setting of error message for the other SDL_malloc() in this function.
Philipp Wiesemann 11 年之前
父节点
当前提交
032b14e7b6
共有 1 个文件被更改,包括 5 次插入0 次删除
  1. 5 0
      src/SDL_hints.c

+ 5 - 0
src/SDL_hints.c

@@ -137,6 +137,10 @@ SDL_AddHintCallback(const char *name, SDL_HintCallback callback, void *userdata)
     SDL_DelHintCallback(name, callback, userdata);
     SDL_DelHintCallback(name, callback, userdata);
 
 
     entry = (SDL_HintWatch *)SDL_malloc(sizeof(*entry));
     entry = (SDL_HintWatch *)SDL_malloc(sizeof(*entry));
+    if (!entry) {
+        SDL_OutOfMemory();
+        return;
+    }
     entry->callback = callback;
     entry->callback = callback;
     entry->userdata = userdata;
     entry->userdata = userdata;
 
 
@@ -149,6 +153,7 @@ SDL_AddHintCallback(const char *name, SDL_HintCallback callback, void *userdata)
         /* Need to add a hint entry for this watcher */
         /* Need to add a hint entry for this watcher */
         hint = (SDL_Hint *)SDL_malloc(sizeof(*hint));
         hint = (SDL_Hint *)SDL_malloc(sizeof(*hint));
         if (!hint) {
         if (!hint) {
+            SDL_OutOfMemory();
             if(entry)
             if(entry)
             {
             {
               SDL_free(entry);
               SDL_free(entry);