Home | History | Annotate | Download | only in Inputs
      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 
     13 
     14 #if __OBJC__
     15 
     16 #import "system-header-simulator-objc.h"
     17 
     18 @interface Wrapper : NSData
     19 - (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len;
     20 @end
     21 
     22 @implementation Wrapper
     23 - (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len {
     24   return [self initWithBytesNoCopy:bytes length:len freeWhenDone:1]; // no-warning
     25 }
     26 @end
     27 
     28 @interface CustomData : NSData
     29 + (id)somethingNoCopy:(char *)bytes;
     30 + (id)somethingNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer;
     31 + (id)something:(char *)bytes freeWhenDone:(BOOL)freeBuffer;
     32 @end
     33 
     34 #endif
     35