diff options
-rw-r--r-- | MLKBinaryStreamCharacterStream.m | 2 | ||||
-rw-r--r-- | MLKCompiledClosure.m | 15 | ||||
-rw-r--r-- | MLKForeignProcedure.h | 1 | ||||
-rw-r--r-- | MLKForeignProcedure.m | 14 | ||||
-rw-r--r-- | MLKForm.m | 10 |
5 files changed, 33 insertions, 9 deletions
diff --git a/MLKBinaryStreamCharacterStream.m b/MLKBinaryStreamCharacterStream.m index 6fc7119..4efe6e7 100644 --- a/MLKBinaryStreamCharacterStream.m +++ b/MLKBinaryStreamCharacterStream.m @@ -66,7 +66,7 @@ { retval = [tmpstr characterAtIndex:0]; [tmpstr release]; - //free (buffer); + //FIXME: ? free (buffer); return retval; } else diff --git a/MLKCompiledClosure.m b/MLKCompiledClosure.m index 9227008..6f61b45 100644 --- a/MLKCompiledClosure.m +++ b/MLKCompiledClosure.m @@ -26,6 +26,10 @@ #import <Foundation/NSDictionary.h> #import <Foundation/NSSet.h> +#ifdef __OBJC_GC__ +#import <Foundation/NSZone.h> +#endif + #import <stdlib.h> @@ -36,14 +40,23 @@ { int i; - _data = data; _dataLength = dataLength; _code = code; +#ifdef __OBJC_GC__ + _data = NSAllocateCollectable (dataLength * sizeof(id), NSScannedOption); + for (i = 0; i < _dataLength; i++) + { + _data[i] = data[i]; + } + free (data); +#else + _data = data; for (i = 0; i < _dataLength; i++) { LRETAIN (_data[i]); } +#endif return self; } diff --git a/MLKForeignProcedure.h b/MLKForeignProcedure.h index 160bb7c..cb63d32 100644 --- a/MLKForeignProcedure.h +++ b/MLKForeignProcedure.h @@ -43,5 +43,4 @@ -(NSString *) descriptionForLisp; -(void) dealloc; --(void) finalize; @end diff --git a/MLKForeignProcedure.m b/MLKForeignProcedure.m index ce4ac8a..f268005 100644 --- a/MLKForeignProcedure.m +++ b/MLKForeignProcedure.m @@ -23,6 +23,10 @@ #import <Foundation/NSArray.h> #import <Foundation/NSEnumerator.h> +#ifdef __OBJC_GC__ +#import <Foundation/NSZone.h> +#endif + #ifdef HAVE_FFI_H #include <ffi.h> #elif HAVE_FFI_FFI_H @@ -47,7 +51,11 @@ _code = code; _returnType = returnType; +#ifdef __OBJC_GC__ + _argumentTypes = NSAllocateCollectable (sizeof (MLKForeignType) * [argTypes count], NSScannedOption); +#else _argumentTypes = malloc (sizeof (MLKForeignType) * [argTypes count]); +#endif e = [argTypes objectEnumerator]; i = 0; @@ -113,10 +121,4 @@ free (_argumentTypes); [super dealloc]; } - --(void) finalize -{ - free (_argumentTypes); - [super finalize]; -} @end @@ -26,6 +26,10 @@ #import <Foundation/NSSet.h> #import <Foundation/NSString.h> +#ifdef __OBJC_GC__ +#import <Foundation/NSZone.h> +#endif + #include <stdlib.h> #define MAKE_FORM(OBJECT) \ @@ -489,7 +493,13 @@ argtypes = [[[_tail cdr] cdr] car]; _argc = [argtypes length]; + +#ifdef __OBJC_GC__ + _argumentTypes = NSAllocateCollectable (_argc * sizeof (MLKForeignType), NSScannedOption); +#else _argumentTypes = malloc (_argc * sizeof (MLKForeignType)); +#endif + while (argtypes) { _argumentTypes[i] = MLKForeignTypeWithTypeDesignator ([argtypes car]); |