diff --git a/src/platform_macosx.c b/src/platform_macosx.c index 1f6d20a..b1b1c8a 100644 --- a/src/platform_macosx.c +++ b/src/platform_macosx.c @@ -7,78 +7,28 @@ */ #define __PHYSICSFS_INTERNAL__ -#include "physfs_platforms.h" +#include "physfs_internal.h" #ifdef PHYSFS_PLATFORM_MACOSX #include #if !defined(PHYSFS_NO_CDROM_SUPPORT) -#include /* !!! FIXME */ +#include #include #include #include #include #endif -/* Seems to get defined in some system header... */ -#ifdef Free -#undef Free -#endif - -#include "physfs_internal.h" - - -/* Wrap PHYSFS_Allocator in a CFAllocator... */ -static CFAllocatorRef cfallocator = NULL; - -static CFStringRef cfallocCopyDesc(const void *info) -{ - return CFStringCreateWithCString(cfallocator, "PhysicsFS", - kCFStringEncodingASCII); -} /* cfallocCopyDesc */ - - -static void *cfallocMalloc(CFIndex allocSize, CFOptionFlags hint, void *info) -{ - return allocator.Malloc(allocSize); -} /* cfallocMalloc */ - - -static void cfallocFree(void *ptr, void *info) -{ - allocator.Free(ptr); -} /* cfallocFree */ - - -static void *cfallocRealloc(void *ptr, CFIndex newsize, - CFOptionFlags hint, void *info) -{ - if ((ptr == NULL) || (newsize <= 0)) - return NULL; /* ADC docs say you should always return NULL here. */ - return allocator.Realloc(ptr, newsize); -} /* cfallocRealloc */ - - int __PHYSFS_platformInit(void) { - /* set up a CFAllocator, so Carbon can use the physfs allocator, too. */ - CFAllocatorContext ctx; - memset(&ctx, '\0', sizeof (ctx)); - ctx.copyDescription = cfallocCopyDesc; - ctx.allocate = cfallocMalloc; - ctx.reallocate = cfallocRealloc; - ctx.deallocate = cfallocFree; - cfallocator = CFAllocatorCreate(kCFAllocatorUseContext, &ctx); - BAIL_IF(!cfallocator, PHYSFS_ERR_OUT_OF_MEMORY, 0); return 1; /* success. */ } /* __PHYSFS_platformInit */ int __PHYSFS_platformDeinit(void) { - CFRelease(cfallocator); - cfallocator = NULL; return 1; /* always succeed. */ } /* __PHYSFS_platformDeinit */ @@ -103,7 +53,7 @@ static int darwinIsWholeMedia(io_service_t service) wholeMedia = IORegistryEntryCreateCFProperty(service, CFSTR(kIOMediaWholeKey), - cfallocator, 0); + NULL, 0); if (wholeMedia == NULL) return 0; @@ -239,7 +189,7 @@ char *__PHYSFS_platformCalcBaseDir(const char *argv0) cfstr = CFURLCopyFileSystemPath(cfurl, kCFURLPOSIXPathStyle); CFRelease(cfurl); BAIL_IF(!cfstr, PHYSFS_ERR_OUT_OF_MEMORY, NULL); - cfmutstr = CFStringCreateMutableCopy(cfallocator, 0, cfstr); + cfmutstr = CFStringCreateMutableCopy(NULL, 0, cfstr); CFRelease(cfstr); BAIL_IF(!cfmutstr, PHYSFS_ERR_OUT_OF_MEMORY, NULL); CFStringAppendCString(cfmutstr, "/", kCFStringEncodingUTF8); @@ -263,61 +213,9 @@ char *__PHYSFS_platformCalcPrefDir(const char *org, const char *app) } /* __PHYSFS_platformCalcPrefDir */ -/* Platform allocator uses default CFAllocator at PHYSFS_init() time. */ - -static CFAllocatorRef cfallocdef = NULL; - -static int macosxAllocatorInit(void) -{ - int retval = 0; - cfallocdef = CFAllocatorGetDefault(); - retval = (cfallocdef != NULL); - if (retval) - CFRetain(cfallocdef); - return retval; -} /* macosxAllocatorInit */ - - -static void macosxAllocatorDeinit(void) -{ - if (cfallocdef != NULL) - { - CFRelease(cfallocdef); - cfallocdef = NULL; - } /* if */ -} /* macosxAllocatorDeinit */ - - -static void *macosxAllocatorMalloc(PHYSFS_uint64 s) -{ - if (!__PHYSFS_ui64FitsAddressSpace(s)) - BAIL(PHYSFS_ERR_OUT_OF_MEMORY, NULL); - return CFAllocatorAllocate(cfallocdef, (CFIndex) s, 0); -} /* macosxAllocatorMalloc */ - - -static void *macosxAllocatorRealloc(void *ptr, PHYSFS_uint64 s) -{ - if (!__PHYSFS_ui64FitsAddressSpace(s)) - BAIL(PHYSFS_ERR_OUT_OF_MEMORY, NULL); - return CFAllocatorReallocate(cfallocdef, ptr, (CFIndex) s, 0); -} /* macosxAllocatorRealloc */ - - -static void macosxAllocatorFree(void *ptr) -{ - CFAllocatorDeallocate(cfallocdef, ptr); -} /* macosxAllocatorFree */ - - int __PHYSFS_platformSetDefaultAllocator(PHYSFS_Allocator *a) { - allocator.Init = macosxAllocatorInit; - allocator.Deinit = macosxAllocatorDeinit; - allocator.Malloc = macosxAllocatorMalloc; - allocator.Realloc = macosxAllocatorRealloc; - allocator.Free = macosxAllocatorFree; - return 1; /* return non-zero: we're supplying custom allocator. */ + return 0; /* just use malloc() and friends. */ } /* __PHYSFS_platformSetDefaultAllocator */ #endif /* PHYSFS_PLATFORM_MACOSX */