Commit 67c10169ee21b4a60129475c44a6d0248e02161b

Sam Lantinga 2013-08-29T08:25:54

Christoph Mallon: Report an error, if creating the directories in SDL_GetPrefPath() failed.

diff --git a/src/filesystem/unix/SDL_sysfilesystem.c b/src/filesystem/unix/SDL_sysfilesystem.c
index 3be5eb7..f5517b8 100644
--- a/src/filesystem/unix/SDL_sysfilesystem.c
+++ b/src/filesystem/unix/SDL_sysfilesystem.c
@@ -25,6 +25,8 @@
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /* System dependent filesystem routines                                */
 
+#include <errno.h>
+#include <stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
 #include <sys/stat.h>
@@ -190,11 +192,17 @@ SDL_GetPrefPath(const char *org, const char *app)
     for (ptr = retval+1; *ptr; ptr++) {
         if (*ptr == '/') {
             *ptr = '\0';
-            mkdir(retval, 0700);
+            if (mkdir(retval, 0700) != 0 && errno != EEXIST)
+                goto error;
             *ptr = '/';
         }
     }
-    mkdir(retval, 0700);
+    if (mkdir(retval, 0700) != 0 && errno != EEXIST) {
+error:
+        SDL_SetError("Couldn't create directory '%s': ", retval, strerror(errno));
+        SDL_free(retval);
+        return NULL;
+    }
 
     return retval;
 }