Change how Unix version of __PHYSFS_platformCurrentDir() allocates memory.

This commit is contained in:
Ryan C. Gordon 2012-03-11 03:39:57 -04:00
parent 7a8e3de103
commit b7e0ec7391
1 changed files with 8 additions and 11 deletions

View File

@ -307,18 +307,13 @@ char *__PHYSFS_platformRealPath(const char *path)
char *__PHYSFS_platformCurrentDir(void)
{
/*
* This can't just do platformRealPath("."), since that would eventually
* just end up calling back into here.
*/
int allocSize = 0;
int allocSize = 64;
char *retval = NULL;
char *ptr;
do
{
allocSize += 100;
allocSize *= 2;
ptr = (char *) allocator.Realloc(retval, allocSize);
if (ptr == NULL)
{
@ -333,15 +328,17 @@ char *__PHYSFS_platformCurrentDir(void)
if (ptr == NULL && errno)
{
/*
* getcwd() failed for some reason, for example current
* directory not existing.
*/
/* getcwd() failed , for example current directory not existing... */
if (retval != NULL)
allocator.Free(retval);
BAIL_MACRO(ERR_NO_SUCH_FILE, NULL);
} /* if */
/* try to shrink buffer... */
ptr = (char *) allocator.Realloc(retval, strlen(retval) + 1);
if (ptr != NULL)
retval = ptr; /* oh well if it failed. */
return retval;
} /* __PHYSFS_platformCurrentDir */