X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;ds=sidebyside;f=Source%2FMacCompatibility.cpp;h=a6b4d70e8160f7cff9c6a25d04de08d82bbedb1c;hb=7c0929d838b89843ccca9d679b3963ff8bdd35b8;hp=dfedc9a4b6490a084a0cd9904e2318549d0cecbe;hpb=c26c5303fbc3fcc607681b848bc4fd0641320691;p=lugaru.git diff --git a/Source/MacCompatibility.cpp b/Source/MacCompatibility.cpp index dfedc9a..a6b4d70 100644 --- a/Source/MacCompatibility.cpp +++ b/Source/MacCompatibility.cpp @@ -16,6 +16,7 @@ #if PLATFORM_UNIX #include #include +#include #include typedef long long __int64; typedef __int64 LARGE_INTEGER; @@ -242,7 +243,7 @@ static int locateCorrectFile(char *buf, const char *mode) snprintf(prefpathfile, len, "%s/%s", prefpath, buf); int rc = locateCorrectCase(prefpathfile, iswriting); /* favor prefpath. */ - if (rc == 0) // found? + if ( (rc == 0) || ((rc == -1) && (iswriting)) ) // found or create? strcpy(buf, prefpathfile); else if ((rc < 0) && (!iswriting)) /* not writing? Try game dir... */ rc = locateCorrectCase(buf, iswriting); @@ -255,6 +256,9 @@ static int locateCorrectFile(char *buf, const char *mode) static char g_filename[4096]; char* ConvertFileName( const char* orgfilename, const char *mode) { + if (orgfilename == g_filename) // recursion? + return g_filename; + // translate filename into proper path name if (orgfilename[ 0] == ':') orgfilename++;