Added warning about potential infinite recursion between setError and grabMutex.
authorRyan C. Gordon <icculus@icculus.org>
Tue, 02 Apr 2002 13:41:11 +0000
changeset 156 f45e26b5f398
parent 155 54fee85d9c26
child 157 916ee05fe0db
Added warning about potential infinite recursion between setError and grabMutex.
physfs_internal.h
platform/skeleton.c
--- a/physfs_internal.h	Tue Apr 02 13:39:44 2002 +0000
+++ b/physfs_internal.h	Tue Apr 02 13:41:11 2002 +0000
@@ -262,6 +262,7 @@
 #define ERR_TOO_MANY_SYMLINKS    "Too many symbolic links"
 #define ERR_COMPRESSION          "(De)compression error"
 #define ERR_NOT_IMPLEMENTED      "Not implemented"
+#define ERR_OS_ERROR             "Operating system reported error"
 
 /*
  * Call this to set the message returned by PHYSFS_getLastError().
@@ -663,6 +664,10 @@
  *  unrecoverable problem grabbing it (this should not be a matter of 
  *  timing out! We're talking major system errors; block until the mutex 
  *  is available otherwise.)
+ *
+ * _DO NOT_ call __PHYSFS_setError() in here! Since setError calls this
+ *  function, you'll cause an infinite recursion. This means you can't
+ *  use the BAIL_*MACRO* macros, either.
  */
 int __PHYSFS_platformGrabMutex(void *mutex);
 
@@ -671,6 +676,10 @@
  *  once for each time that platformGrabMutex was called. Once possession has
  *  been released, the next thread in line to grab the mutex (if any) may
  *  proceed.
+ *
+ * _DO NOT_ call __PHYSFS_setError() in here! Since setError calls this
+ *  function, you'll cause an infinite recursion. This means you can't
+ *  use the BAIL_*MACRO* macros, either.
  */
 void __PHYSFS_platformReleaseMutex(void *mutex);
 
--- a/platform/skeleton.c	Tue Apr 02 13:39:44 2002 +0000
+++ b/platform/skeleton.c	Tue Apr 02 13:41:11 2002 +0000
@@ -207,12 +207,14 @@
 
 int __PHYSFS_platformGrabMutex(void *mutex)
 {
-    BAIL_MACRO(ERR_NOT_IMPLEMENTED, 0);
+    /* not implemented, but can't call __PHYSFS_setError! */
+    return(0);
 } /* __PHYSFS_platformGrabMutex */
 
 
 void __PHYSFS_platformReleaseMutex(void *mutex)
 {
+    /* not implemented, but can't call __PHYSFS_setError! */
 } /* __PHYSFS_platformReleaseMutex */
 
 /* end of skeleton.c ... */