xref: /llvm-project/clang/test/Analysis/Inputs/system-header-simulator-for-malloc.h (revision 67c6ad6f30e35c7670bce9bca902caa4b1c8c0e8)
1 // Like the compiler, the static analyzer treats some functions differently if
2 // they come from a system header -- for example, it is assumed that system
3 // functions do not arbitrarily free() their parameters, and that some bugs
4 // found in system headers cannot be fixed by the user and should be
5 // suppressed.
6 #pragma clang system_header
7 
8 typedef __typeof(sizeof(int)) size_t;
9 void *malloc(size_t);
10 void *calloc(size_t, size_t);
11 void free(void *);
12 void *alloca(size_t);
13 
14 
15 #if __OBJC__
16 
17 #import "system-header-simulator-objc.h"
18 
19 @interface Wrapper : NSData
20 - (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len;
21 @end
22 
23 @implementation Wrapper
24 - (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len {
25   return [self initWithBytesNoCopy:bytes length:len freeWhenDone:1]; // no-warning
26 }
27 @end
28 
29 @interface CustomData : NSData
30 + (id)somethingNoCopy:(char *)bytes;
31 + (id)somethingNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer;
32 + (id)something:(char *)bytes freeWhenDone:(BOOL)freeBuffer;
33 @end
34 
35 #endif
36