From 64599213f12168755da85ffbc7af1afb6e83866e Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 6 Sep 2005 06:24:42 +0000 Subject: [PATCH] Don't use size_t in physfs.h, since it relies on C runtime headers. --- CHANGELOG | 3 +++ physfs.h | 11 +++++++++-- physfs_internal.h | 4 ++-- platform/macclassic.c | 14 ++++++++++---- platform/os2.c | 14 ++++++++++---- platform/pocketpc.c | 14 ++++++++++---- platform/posix.c | 14 ++++++++++---- platform/skeleton.c | 14 ++++++++++---- platform/win32.c | 14 ++++++++++---- 9 files changed, 74 insertions(+), 28 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 97278204..f6609a24 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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. diff --git a/physfs.h b/physfs.h index c6b51cdb..8557f1fe 100644 --- a/physfs.h +++ b/physfs.h @@ -1857,14 +1857,21 @@ __EXPORT__ int PHYSFS_writeUBE64(PHYSFS_File *file, PHYSFS_uint64 val); * 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; diff --git a/physfs_internal.h b/physfs_internal.h index 41e1224e..dc702053 100644 --- a/physfs_internal.h +++ b/physfs_internal.h @@ -1682,14 +1682,14 @@ void __PHYSFS_platformAllocatorDeinit(void); * 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. diff --git a/platform/macclassic.c b/platform/macclassic.c index f1841a94..34708056 100644 --- a/platform/macclassic.c +++ b/platform/macclassic.c @@ -939,17 +939,23 @@ void __PHYSFS_platformAllocatorDeinit(void) } /* __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 */ diff --git a/platform/os2.c b/platform/os2.c index 31d9f11a..58f635a9 100644 --- a/platform/os2.c +++ b/platform/os2.c @@ -754,17 +754,23 @@ void __PHYSFS_platformAllocatorDeinit(void) } /* __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 */ diff --git a/platform/pocketpc.c b/platform/pocketpc.c index f5b7cf12..0284ab04 100644 --- a/platform/pocketpc.c +++ b/platform/pocketpc.c @@ -672,17 +672,23 @@ void __PHYSFS_platformAllocatorDeinit(void) } /* __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 */ diff --git a/platform/posix.c b/platform/posix.c index 9e4a6dc5..dc9cbada 100644 --- a/platform/posix.c +++ b/platform/posix.c @@ -514,17 +514,23 @@ void __PHYSFS_platformAllocatorDeinit(void) } /* __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 */ diff --git a/platform/skeleton.c b/platform/skeleton.c index 7aaab695..372aa355 100644 --- a/platform/skeleton.c +++ b/platform/skeleton.c @@ -246,17 +246,23 @@ void __PHYSFS_platformAllocatorDeinit(void) } /* __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 */ diff --git a/platform/win32.c b/platform/win32.c index c80e5c02..31bfd0c0 100644 --- a/platform/win32.c +++ b/platform/win32.c @@ -1122,17 +1122,23 @@ void __PHYSFS_platformAllocatorDeinit(void) } /* __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 */