FastMallocBuffer should not be used when GC is enabled. Not only is it
not necessary, right now it causes problems, as it directly calls into
the autorelease pool, which, itself, is not used in GC applications, and
should not be called. The attached patch makes _FastMallocBuffer(size)
simply call GC_malloc(size) with GC enabled.
(this patch is against gnustep-base-1.3.2)
*** Source-orig/NSObject.m Fri Apr 5 11:26:47 2002
--- Source/NSObject.m Fri May 10 03:14:14 2002
***************
*** 52,60 ****
--- 52,62 ----
extern BOOL __objc_responds_to(id, SEL);
#endif
+ #if GS_WITH_GC == 0
@class _FastMallocBuffer;
static Class fastMallocClass;
static unsigned fastMallocOffset;
+ #endif
static Class NSConstantStringClass;
***************
*** 721,735 ****
autorelease_class = [NSAutoreleasePool class];
autorelease_sel = @selector(addObject:);
autorelease_imp = [autorelease_class methodForSelector:
autorelease_sel];
- fastMallocClass = [_FastMallocBuffer class];
#if GS_WITH_GC == 0
#if !defined(REFCNT_LOCAL)
GSIMapInitWithZoneAndCapacity(&retain_counts,
NSDefaultMallocZone(), 1024);
#endif
fastMallocOffset = fastMallocClass->instance_size % ALIGN;
- #else
- fastMallocOffset = 0;
#endif
NSConstantStringClass = [NSString constantStringClass];
GSBuildStrings();
--- 723,735 ----
autorelease_class = [NSAutoreleasePool class];
autorelease_sel = @selector(addObject:);
autorelease_imp = [autorelease_class methodForSelector:
autorelease_sel];
#if GS_WITH_GC == 0
+ fastMallocClass = [_FastMallocBuffer class];
#if !defined(REFCNT_LOCAL)
GSIMapInitWithZoneAndCapacity(&retain_counts,
NSDefaultMallocZone(), 1024);
#endif
fastMallocOffset = fastMallocClass->instance_size % ALIGN;
#endif
NSConstantStringClass = [NSString constantStringClass];
GSBuildStrings();
***************
*** 1579,1589 ****
--- 1579,1591 ----
/*
* Stuff for temporary memory management.
*/
+ #if GS_WITH_GC == 0
@interface _FastMallocBuffer : NSObject
@end
@implementation _FastMallocBuffer
@end
+ #endif
/*
* Function for giving us the fastest possible allocation of memory
to
***************
*** 1592,1603 ****
--- 1594,1609 ----
void *
_fastMallocBuffer(unsigned size)
{
+ #if GS_WITH_GC
+ return GC_malloc(size);
+ #else
_FastMallocBuffer *o;
o = (_FastMallocBuffer*)NSAllocateObject(fastMallocClass,
size + fastMallocOffset, NSDefaultMallocZone());
(*autorelease_imp)(autorelease_class, autorelease_sel, o);
return ((void*)&o[1])+fastMallocOffset;
+ #endif
}
_______________________________________________
Bug-gnustep mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-gnustep