Fixed a crashbug when calling PHYSFS_deinit() twice in a row.

This commit is contained in:
Ryan C. Gordon 2002-06-08 08:50:00 +00:00
parent 79800373fa
commit 943904cdd9
1 changed files with 12 additions and 5 deletions

View File

@ -111,7 +111,7 @@ static ErrMsg *findErrorForCurrentThread(void)
ErrMsg *i; ErrMsg *i;
PHYSFS_uint64 tid; PHYSFS_uint64 tid;
if (initialized) if (errorLock != NULL)
__PHYSFS_platformGrabMutex(errorLock); __PHYSFS_platformGrabMutex(errorLock);
if (errorMessages != NULL) if (errorMessages != NULL)
@ -122,13 +122,14 @@ static ErrMsg *findErrorForCurrentThread(void)
{ {
if (i->tid == tid) if (i->tid == tid)
{ {
__PHYSFS_platformReleaseMutex(errorLock); if (errorLock != NULL)
__PHYSFS_platformReleaseMutex(errorLock);
return(i); return(i);
} /* if */ } /* if */
} /* for */ } /* for */
} /* if */ } /* if */
if (initialized) if (errorLock != NULL)
__PHYSFS_platformReleaseMutex(errorLock); __PHYSFS_platformReleaseMutex(errorLock);
return(NULL); /* no error available. */ return(NULL); /* no error available. */
@ -153,10 +154,14 @@ void __PHYSFS_setError(const char *str)
memset((void *) err, '\0', sizeof (ErrMsg)); memset((void *) err, '\0', sizeof (ErrMsg));
err->tid = __PHYSFS_platformGetThreadID(); err->tid = __PHYSFS_platformGetThreadID();
__PHYSFS_platformGrabMutex(errorLock); if (errorLock != NULL)
__PHYSFS_platformGrabMutex(errorLock);
err->next = errorMessages; err->next = errorMessages;
errorMessages = err; errorMessages = err;
__PHYSFS_platformReleaseMutex(errorLock);
if (errorLock != NULL)
__PHYSFS_platformReleaseMutex(errorLock);
} /* if */ } /* if */
err->errorAvailable = 1; err->errorAvailable = 1;
@ -188,6 +193,8 @@ static void freeErrorMessages(void)
next = i->next; next = i->next;
free(i); free(i);
} /* for */ } /* for */
errorMessages = NULL;
} /* freeErrorMessages */ } /* freeErrorMessages */