Don't use size_t in physfs.h, since it relies on C runtime headers.
authorRyan C. Gordon <icculus@icculus.org>
Tue, 06 Sep 2005 06:24:42 +0000
changeset 747 3da194b12f43
parent 746 88780f7156d3
child 748 e400ca09da17
Don't use size_t in physfs.h, since it relies on C runtime headers.
CHANGELOG
physfs.h
physfs_internal.h
platform/macclassic.c
platform/os2.c
platform/pocketpc.c
platform/posix.c
platform/skeleton.c
platform/win32.c
--- a/CHANGELOG	Sat Aug 20 04:46:25 2005 +0000
+++ b/CHANGELOG	Tue Sep 06 06:24:42 2005 +0000
@@ -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.
--- a/physfs.h	Sat Aug 20 04:46:25 2005 +0000
+++ b/physfs.h	Tue Sep 06 06:24:42 2005 +0000
@@ -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;
 
--- a/physfs_internal.h	Sat Aug 20 04:46:25 2005 +0000
+++ b/physfs_internal.h	Tue Sep 06 06:24:42 2005 +0000
@@ -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.
--- a/platform/macclassic.c	Sat Aug 20 04:46:25 2005 +0000
+++ b/platform/macclassic.c	Tue Sep 06 06:24:42 2005 +0000
@@ -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 */
 
 
--- a/platform/os2.c	Sat Aug 20 04:46:25 2005 +0000
+++ b/platform/os2.c	Tue Sep 06 06:24:42 2005 +0000
@@ -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 */
 
 
--- a/platform/pocketpc.c	Sat Aug 20 04:46:25 2005 +0000
+++ b/platform/pocketpc.c	Tue Sep 06 06:24:42 2005 +0000
@@ -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 */
 
 
--- a/platform/posix.c	Sat Aug 20 04:46:25 2005 +0000
+++ b/platform/posix.c	Tue Sep 06 06:24:42 2005 +0000
@@ -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 */
 
 
--- a/platform/skeleton.c	Sat Aug 20 04:46:25 2005 +0000
+++ b/platform/skeleton.c	Tue Sep 06 06:24:42 2005 +0000
@@ -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 */
 
 
--- a/platform/win32.c	Sat Aug 20 04:46:25 2005 +0000
+++ b/platform/win32.c	Tue Sep 06 06:24:42 2005 +0000
@@ -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 */