Mercurial > dwindows
comparison ios/dw.m @ 2813:9c9b680f7772
Mac/iOS: Fix a memory leak when calling API functions that return.
This affects iOS and newer versions of MacOS that require main thread.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Thu, 28 Jul 2022 09:54:23 +0000 |
parents | 975df4680ff7 |
children | 5000a8a43825 |
comparison
equal
deleted
inserted
replaced
2812:723b79981427 | 2813:9c9b680f7772 |
---|---|
186 void _##func(NSPointerArray *_args) { | 186 void _##func(NSPointerArray *_args) { |
187 #define DW_FUNCTION_RETURN(func, rettype) [DWObj safeCall:@selector(callBack:) withObject:_args]; {\ | 187 #define DW_FUNCTION_RETURN(func, rettype) [DWObj safeCall:@selector(callBack:) withObject:_args]; {\ |
188 void *tmp = [_args pointerAtIndex:[_args count]-1]; \ | 188 void *tmp = [_args pointerAtIndex:[_args count]-1]; \ |
189 rettype myreturn = *((rettype *)tmp); \ | 189 rettype myreturn = *((rettype *)tmp); \ |
190 free(tmp); \ | 190 free(tmp); \ |
191 return myreturn; } \ | 191 [_args release]; \ |
192 [_args release]; \ | 192 DW_LOCAL_POOL_OUT; \ |
193 DW_LOCAL_POOL_OUT; } \ | 193 return myreturn; }} \ |
194 void _##func(NSPointerArray *_args) { | 194 void _##func(NSPointerArray *_args) { |
195 #define DW_FUNCTION_RETURN_THIS(_retvar) { void *_myreturn = malloc(sizeof(_retvar)); \ | 195 #define DW_FUNCTION_RETURN_THIS(_retvar) { void *_myreturn = malloc(sizeof(_retvar)); \ |
196 memcpy(_myreturn, (void *)&_retvar, sizeof(_retvar)); \ | 196 memcpy(_myreturn, (void *)&_retvar, sizeof(_retvar)); \ |
197 [_args addPointer:_myreturn]; }} | 197 [_args addPointer:_myreturn]; }} |
198 #define DW_FUNCTION_RETURN_NOTHING } | 198 #define DW_FUNCTION_RETURN_NOTHING } |