19fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose// Like the compiler, the static analyzer treats some functions differently if 29fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose// they come from a system header -- for example, it is assumed that system 39fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose// functions do not arbitrarily free() their parameters, and that some bugs 49fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose// found in system headers cannot be fixed by the user and should be 59fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose// suppressed. 69fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose#pragma clang system_header 79fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose 89fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rosetypedef __typeof(sizeof(int)) size_t; 99fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rosevoid *malloc(size_t); 109fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rosevoid *calloc(size_t, size_t); 119fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rosevoid free(void *); 129fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose 139fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose 149fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose#if __OBJC__ 159fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose 169fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose#import "system-header-simulator-objc.h" 179fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose 189fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose@interface Wrapper : NSData 199fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len; 209fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose@end 219fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose 229fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose@implementation Wrapper 239fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len { 249fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose return [self initWithBytesNoCopy:bytes length:len freeWhenDone:1]; // no-warning 259fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose} 269fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose@end 279fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose 289fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose@interface CustomData : NSData 299fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose+ (id)somethingNoCopy:(char *)bytes; 309fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose+ (id)somethingNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer; 319fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose+ (id)something:(char *)bytes freeWhenDone:(BOOL)freeBuffer; 329fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose@end 339fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose 349fe09f30f76cb65ca2a5fcd8e649f5b2f0cf02bdJordan Rose#endif 35