| OLD | NEW |
| 1 //------------------------------------------------------------------------------
--------- | 1 //------------------------------------------------------------------------------
--------- |
| 2 // $Id$ | 2 // $Id$ |
| 3 // Copyright (c) 2009 by Mulle Kybernetik. See License file for details. | 3 // Copyright (c) 2009 by Mulle Kybernetik. See License file for details. |
| 4 //------------------------------------------------------------------------------
--------- | 4 //------------------------------------------------------------------------------
--------- |
| 5 | 5 |
| 6 #import "OCMBoxedReturnValueProvider.h" | 6 #import "OCMBoxedReturnValueProvider.h" |
| 7 | 7 |
| 8 | 8 |
| 9 @implementation OCMBoxedReturnValueProvider | 9 @implementation OCMBoxedReturnValueProvider |
| 10 | 10 |
| 11 - (void)handleInvocation:(NSInvocation *)anInvocation | 11 - (void)handleInvocation:(NSInvocation *)anInvocation |
| 12 { | 12 { |
| 13 » if(strcmp([[anInvocation methodSignature] methodReturnType], [(NSValue *
)returnValue objCType]) != 0) | 13 » const char* returnType = [[anInvocation methodSignature] methodReturnTyp
e]; |
| 14 » const char* valueType = [(NSValue *)returnValue objCType]; |
| 15 » // ARM64 uses 'B' for BOOLS in method signatures but 'c' in NSValue; tha
t case should match. |
| 16 » if(strcmp(returnType, valueType) != 0 && !(strcmp(returnType, "B") == 0
&& strcmp(valueType, "c") == 0)) |
| 14 @throw [NSException exceptionWithName:NSInvalidArgumentException
reason:@"Return value does not match method signature." userInfo:nil]; | 17 @throw [NSException exceptionWithName:NSInvalidArgumentException
reason:@"Return value does not match method signature." userInfo:nil]; |
| 15 void *buffer = malloc([[anInvocation methodSignature] methodReturnLength
]); | 18 void *buffer = malloc([[anInvocation methodSignature] methodReturnLength
]); |
| 16 [returnValue getValue:buffer]; | 19 [returnValue getValue:buffer]; |
| 17 [anInvocation setReturnValue:buffer]; | 20 [anInvocation setReturnValue:buffer]; |
| 18 free(buffer); | 21 free(buffer); |
| 19 } | 22 } |
| 20 | 23 |
| 21 @end | 24 @end |
| OLD | NEW |