зеркало из https://github.com/microsoft/clang.git
Add test case for <rdar://problem/6257780>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71444 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
0408678362
Коммит
a0cc00dfb1
|
@ -129,6 +129,17 @@ typedef mach_error_t DAReturn;
|
|||
typedef const struct __DADissenter * DADissenterRef;
|
||||
extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn status, CFStringRef string );
|
||||
|
||||
@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
|
||||
- (NSUInteger)count;
|
||||
+ (id)array;
|
||||
@end
|
||||
|
||||
@interface NSAutoreleasePool : NSObject {}
|
||||
+ (void)addObject:(id)anObject;
|
||||
- (void)addObject:(id)anObject;
|
||||
- (void)drain;
|
||||
@end
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Test cases.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -488,6 +499,18 @@ void rdar6704930(unsigned char *s, unsigned int length) {
|
|||
}
|
||||
@end
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// <rdar://problem/6257780> clang checker fails to catch use-after-release
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
int rdar_6257780() {
|
||||
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
|
||||
NSArray *array = [NSArray array];
|
||||
[array release]; // expected-warning{{Incorrect decrement of the reference count of an object is not owned at this point by the caller}}
|
||||
[pool drain];
|
||||
return 0;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Tests of ownership attributes.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
Загрузка…
Ссылка в новой задаче