Explorar el Código

Fixed basedir/userdir calculation.

Ryan C. Gordon hace 23 años
padre
commit
ece998dd3a
Se han modificado 1 ficheros con 14 adiciones y 1 borrados
  1. 14 1
      platform/os2.c

+ 14 - 1
platform/os2.c

@@ -230,6 +230,7 @@ int __PHYSFS_platformInit(void)
     APIRET rc;
     PTIB ptib;
     PPIB ppib;
+    PHYSFS_sint32 len;
 
     assert(baseDir == NULL);
 
@@ -237,7 +238,19 @@ int __PHYSFS_platformInit(void)
     rc = DosQueryModuleName(ppib->pib_hmte, sizeof (buf), (PCHAR) buf);
     BAIL_IF_MACRO(os2err(rc) != NO_ERROR, NULL, 0);
 
-    baseDir = (char *) malloc(strlen(buf) + 1);
+    /* chop off filename, leave path. */
+    for (len = strlen(buf) - 1; len >= 0; len--)
+    {
+        if (buf[len] == '\\')
+        {
+            buf[++len] = '\0';
+            break;
+        } /* if */
+    } /* for */
+
+    assert(len > 0);  /* should have been an "x:\\" on the front on string. */
+
+    baseDir = (char *) malloc(len + 1);
     BAIL_IF_MACRO(baseDir == NULL, ERR_OUT_OF_MEMORY, 0);
     strcpy(baseDir, buf);