| Index: third_party/ocmock/OCMock/OCMReturnValueProvider.m
|
| diff --git a/third_party/ocmock/OCMock/OCMReturnValueProvider.m b/third_party/ocmock/OCMock/OCMReturnValueProvider.m
|
| index d98b59c9956b19d5aa1bfc279e0d7ae30ded125d..99e285a895187434d32cb22e884353e61fc88b8b 100644
|
| --- a/third_party/ocmock/OCMock/OCMReturnValueProvider.m
|
| +++ b/third_party/ocmock/OCMock/OCMReturnValueProvider.m
|
| @@ -1,18 +1,33 @@
|
| -//---------------------------------------------------------------------------------------
|
| -// $Id$
|
| -// Copyright (c) 2009 by Mulle Kybernetik. See License file for details.
|
| -//---------------------------------------------------------------------------------------
|
| +/*
|
| + * Copyright (c) 2009-2015 Erik Doernenburg and contributors
|
| + *
|
| + * Licensed under the Apache License, Version 2.0 (the "License"); you may
|
| + * not use these files except in compliance with the License. You may obtain
|
| + * a copy of the License at
|
| + *
|
| + * http://www.apache.org/licenses/LICENSE-2.0
|
| + *
|
| + * Unless required by applicable law or agreed to in writing, software
|
| + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
| + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
| + * License for the specific language governing permissions and limitations
|
| + * under the License.
|
| + */
|
|
|
| #import "NSMethodSignature+OCMAdditions.h"
|
| #import "OCMReturnValueProvider.h"
|
| +#import "OCMFunctions.h"
|
|
|
|
|
| @implementation OCMReturnValueProvider
|
|
|
| -- (id)initWithValue:(id)aValue
|
| +- (instancetype)initWithValue:(id)aValue
|
| {
|
| - self = [super init];
|
| - returnValue = [aValue retain];
|
| + if ((self = [super init]))
|
| + {
|
| + returnValue = [aValue retain];
|
| + }
|
| +
|
| return self;
|
| }
|
|
|
| @@ -24,10 +39,17 @@
|
|
|
| - (void)handleInvocation:(NSInvocation *)anInvocation
|
| {
|
| - const char *returnType = [[anInvocation methodSignature] methodReturnTypeWithoutQualifiers];
|
| - if(strcmp(returnType, @encode(id)) != 0)
|
| - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Expected invocation with object return type. Did you mean to use andReturnValue: instead?" userInfo:nil];
|
| - [anInvocation setReturnValue:&returnValue];
|
| + if(!OCMIsObjectType([[anInvocation methodSignature] methodReturnType]))
|
| + {
|
| + @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Expected invocation with object return type. Did you mean to use andReturnValue: instead?" userInfo:nil];
|
| + }
|
| + NSString *sel = NSStringFromSelector([anInvocation selector]);
|
| + if([sel hasPrefix:@"alloc"] || [sel hasPrefix:@"new"] || [sel hasPrefix:@"copy"] || [sel hasPrefix:@"mutableCopy"])
|
| + {
|
| + // methods that "create" an object return it with an extra retain count
|
| + [returnValue retain];
|
| + }
|
| + [anInvocation setReturnValue:&returnValue];
|
| }
|
|
|
| @end
|
|
|