blob: 0fa95ebc8bd4b36ce6127f3d1d087b64b56ab038 [file] [log] [blame]
Ted Kremenek6fd8f912009-01-22 23:43:57 +00001// RUN: clang -analyze -checker-cfref -analyzer-store-basic -verify %s &&
2// RUN: clang -analyze -checker-cfref -analyzer-store-region -verify %s
Ted Kremenek3ad2cc82008-10-22 23:56:21 +00003
4typedef const struct __CFString * CFStringRef;
5typedef const struct __CFAllocator * CFAllocatorRef;
6typedef const struct __CFURL * CFURLRef;
7extern CFURLRef CFURLCreateWithString(CFAllocatorRef allocator, CFStringRef URLString, CFURLRef baseURL);
8typedef signed char BOOL;
9@protocol NSObject - (BOOL)isEqual:(id)object; @end
10@interface NSObject <NSObject> {} @end
11@class NSArray, NSString, NSURL;
12
13@interface MyClass : NSObject
14{
Ted Kremenekf4b35482008-10-24 20:33:56 +000015 id myObject;
Ted Kremenek3ad2cc82008-10-22 23:56:21 +000016}
17- (NSURL *)myMethod:(NSString *)inString;
Ted Kremenekf4b35482008-10-24 20:33:56 +000018- (NSURL *)getMethod:(NSString*)inString;
19- (void)addObject:(id)X;
Ted Kremenek3ad2cc82008-10-22 23:56:21 +000020@end
21
22@implementation MyClass
23
24- (NSURL *)myMethod:(NSString *)inString
25{
Ted Kremenekcf118d42009-02-04 23:49:09 +000026 NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); // expected-warning{{leak}}
27 return url;
Ted Kremenek3ad2cc82008-10-22 23:56:21 +000028}
29
Ted Kremenekf4b35482008-10-24 20:33:56 +000030- (NSURL *)getMethod:(NSString *)inString
31{
32 NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0);
33 [self addObject:url];
34 return url; // no-warning
35}
36
37
38- (void)addObject:(id)X
39{
40 myObject = X;
41}
42
Ted Kremenek3ad2cc82008-10-22 23:56:21 +000043@end