r762 - in trunk: . platform

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Sep 6 02:24:43 EDT 2005


Author: icculus
Date: 2005-09-06 02:24:42 -0400 (Tue, 06 Sep 2005)
New Revision: 762

Modified:
   trunk/CHANGELOG
   trunk/physfs.h
   trunk/physfs_internal.h
   trunk/platform/macclassic.c
   trunk/platform/os2.c
   trunk/platform/pocketpc.c
   trunk/platform/posix.c
   trunk/platform/skeleton.c
   trunk/platform/win32.c
Log:
Don't use size_t in physfs.h, since it relies on C runtime headers.


Modified: trunk/CHANGELOG
===================================================================
--- trunk/CHANGELOG	2005-08-20 04:46:25 UTC (rev 761)
+++ trunk/CHANGELOG	2005-09-06 06:24:42 UTC (rev 762)
@@ -2,6 +2,9 @@
  * CHANGELOG.
  */
 
+09062005 - Happy September. Changed the allocation abstraction to use
+           PHYSFS_uint64 instead of size_t, so we don't have to include
+           system headers inside physfs.h.
 08202005 - Fixed bug in verifyPath() that was breaking PHYSFS_setSaneConfig()
            and other corner cases.
 07242005 - Patched to compile on BeOS.

Modified: trunk/physfs.h
===================================================================
--- trunk/physfs.h	2005-08-20 04:46:25 UTC (rev 761)
+++ trunk/physfs.h	2005-09-06 06:24:42 UTC (rev 762)
@@ -1857,14 +1857,21 @@
  *  Allocators are assumed to be reentrant by the caller; please mutex
  *  accordingly.
  *
+ * Allocations are always discussed in 64-bits, for future expansion...we're
+ *  on the cusp of a 64-bit transition, and we'll probably be allocating 6
+ *  gigabytes like it's nothing sooner or later, and I don't want to change
+ *  this again at that point. If you're on a 32-bit platform and have to
+ *  downcast, it's okay to return NULL if the allocation is greater than
+ *  4 gigabytes, since you'd have to do so anyhow.
+ *
  * \sa PHYSFS_setAllocator
  */
 typedef struct
 {
     int (*Init)(void);
     void (*Deinit)(void);
-    void *(*Malloc)(size_t);
-    void *(*Realloc)(void *, size_t);
+    void *(*Malloc)(PHYSFS_uint64);
+    void *(*Realloc)(void *, PHYSFS_uint64);
     void (*Free)(void *);
 } PHYSFS_Allocator;
 

Modified: trunk/physfs_internal.h
===================================================================
--- trunk/physfs_internal.h	2005-08-20 04:46:25 UTC (rev 761)
+++ trunk/physfs_internal.h	2005-09-06 06:24:42 UTC (rev 762)
@@ -1682,14 +1682,14 @@
  *  This is used for allocation if the user hasn't selected their own
  *  allocator via PHYSFS_setAllocator().
  */
-void *__PHYSFS_platformAllocatorMalloc(size_t s);
+void *__PHYSFS_platformAllocatorMalloc(PHYSFS_uint64 s);
 
 /*
  * Implement realloc. It's safe to just pass through from the C runtime.
  *  This is used for allocation if the user hasn't selected their own
  *  allocator via PHYSFS_setAllocator().
  */
-void *__PHYSFS_platformAllocatorRealloc(void *ptr, size_t s);
+void *__PHYSFS_platformAllocatorRealloc(void *ptr, PHYSFS_uint64 s);
 
 /*
  * Implement free. It's safe to just pass through from the C runtime.

Modified: trunk/platform/macclassic.c
===================================================================
--- trunk/platform/macclassic.c	2005-08-20 04:46:25 UTC (rev 761)
+++ trunk/platform/macclassic.c	2005-09-06 06:24:42 UTC (rev 762)
@@ -939,17 +939,23 @@
 } /* __PHYSFS_platformAllocatorInit */
 
 
-void *__PHYSFS_platformAllocatorMalloc(size_t s)
+void *__PHYSFS_platformAllocatorMalloc(PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef malloc
-    return(malloc(s));
+    return(malloc((size_t) s));
 } /* __PHYSFS_platformMalloc */
 
 
-void *__PHYSFS_platformAllocatorRealloc(void *ptr, size_t s)
+void *__PHYSFS_platformAllocatorRealloc(void *ptr, PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef realloc
-    return(realloc(ptr, s));
+    return(realloc(ptr, (size_t) s));
 } /* __PHYSFS_platformRealloc */
 
 

Modified: trunk/platform/os2.c
===================================================================
--- trunk/platform/os2.c	2005-08-20 04:46:25 UTC (rev 761)
+++ trunk/platform/os2.c	2005-09-06 06:24:42 UTC (rev 762)
@@ -754,17 +754,23 @@
 } /* __PHYSFS_platformAllocatorInit */
 
 
-void *__PHYSFS_platformAllocatorMalloc(size_t s)
+void *__PHYSFS_platformAllocatorMalloc(PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef malloc
-    return(malloc(s));
+    return(malloc((size_t) s));
 } /* __PHYSFS_platformMalloc */
 
 
-void *__PHYSFS_platformAllocatorRealloc(void *ptr, size_t s)
+void *__PHYSFS_platformAllocatorRealloc(void *ptr, PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef realloc
-    return(realloc(ptr, s));
+    return(realloc(ptr, (size_t) s));
 } /* __PHYSFS_platformRealloc */
 
 

Modified: trunk/platform/pocketpc.c
===================================================================
--- trunk/platform/pocketpc.c	2005-08-20 04:46:25 UTC (rev 761)
+++ trunk/platform/pocketpc.c	2005-09-06 06:24:42 UTC (rev 762)
@@ -672,17 +672,23 @@
 } /* __PHYSFS_platformAllocatorInit */
 
 
-void *__PHYSFS_platformAllocatorMalloc(size_t s)
+void *__PHYSFS_platformAllocatorMalloc(PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef malloc
-    return(malloc(s));
+    return(malloc((size_t) s));
 } /* __PHYSFS_platformMalloc */
 
 
-void *__PHYSFS_platformAllocatorRealloc(void *ptr, size_t s)
+void *__PHYSFS_platformAllocatorRealloc(void *ptr, PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef realloc
-    return(realloc(ptr, s));
+    return(realloc(ptr, (size_t) s));
 } /* __PHYSFS_platformRealloc */
 
 

Modified: trunk/platform/posix.c
===================================================================
--- trunk/platform/posix.c	2005-08-20 04:46:25 UTC (rev 761)
+++ trunk/platform/posix.c	2005-09-06 06:24:42 UTC (rev 762)
@@ -514,17 +514,23 @@
 } /* __PHYSFS_platformAllocatorInit */
 
 
-void *__PHYSFS_platformAllocatorMalloc(size_t s)
+void *__PHYSFS_platformAllocatorMalloc(PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef malloc
-    return(malloc(s));
+    return(malloc((size_t) s));
 } /* __PHYSFS_platformMalloc */
 
 
-void *__PHYSFS_platformAllocatorRealloc(void *ptr, size_t s)
+void *__PHYSFS_platformAllocatorRealloc(void *ptr, PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef realloc
-    return(realloc(ptr, s));
+    return(realloc(ptr, (size_t) s));
 } /* __PHYSFS_platformRealloc */
 
 

Modified: trunk/platform/skeleton.c
===================================================================
--- trunk/platform/skeleton.c	2005-08-20 04:46:25 UTC (rev 761)
+++ trunk/platform/skeleton.c	2005-09-06 06:24:42 UTC (rev 762)
@@ -246,17 +246,23 @@
 } /* __PHYSFS_platformAllocatorInit */
 
 
-void *__PHYSFS_platformAllocatorMalloc(size_t s)
+void *__PHYSFS_platformAllocatorMalloc(PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef malloc
-    return(malloc(s));
+    return(malloc((size_t) s));
 } /* __PHYSFS_platformMalloc */
 
 
-void *__PHYSFS_platformAllocatorRealloc(void *ptr, size_t s)
+void *__PHYSFS_platformAllocatorRealloc(void *ptr, PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef realloc
-    return(realloc(ptr, s));
+    return(realloc(ptr, (size_t) s));
 } /* __PHYSFS_platformRealloc */
 
 

Modified: trunk/platform/win32.c
===================================================================
--- trunk/platform/win32.c	2005-08-20 04:46:25 UTC (rev 761)
+++ trunk/platform/win32.c	2005-09-06 06:24:42 UTC (rev 762)
@@ -1122,17 +1122,23 @@
 } /* __PHYSFS_platformAllocatorInit */
 
 
-void *__PHYSFS_platformAllocatorMalloc(size_t s)
+void *__PHYSFS_platformAllocatorMalloc(PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef malloc
-    return(malloc(s));
+    return(malloc((size_t) s));
 } /* __PHYSFS_platformMalloc */
 
 
-void *__PHYSFS_platformAllocatorRealloc(void *ptr, size_t s)
+void *__PHYSFS_platformAllocatorRealloc(void *ptr, PHYSFS_uint64 s)
 {
+    /* make sure s isn't larger than the address space of the platform... */
+    if ( s > (0xFFFFFFFFFFFFFFFF >> (64-(sizeof (size_t) * 8))) )
+        BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
     #undef realloc
-    return(realloc(ptr, s));
+    return(realloc(ptr, (size_t) s));
 } /* __PHYSFS_platformRealloc */
 
 




More information about the physfs-commits mailing list