You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.2 KiB

/*
* Copyright (c) 2014 - present Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#import "BlockVar.h"
@implementation BlockVar
+ (int)test {
return 5;
}
+ (int)navigateToURLInBackground {
int (^addBlock)(int a, int b) = ^(int a, int b) {
int res = [self test];
return a + b + res;
};
int x = addBlock(1, 2);
int* p = 0;
if (x == 8)
return *p;
else
return x;
}
- (int)blockPostBad {
int* x = NULL;
int* (^my_block)(void) = ^() {
return x;
};
return *my_block(); // should report null deref here
}
- (int)blockPostOk {
int i = 7;
int* x = &i;
int* (^my_block)(void) = ^() {
return x;
};
return *my_block(); // should not report null deref here
}
- (int)capturedNullDeref {
int* x = NULL;
int (^my_block)(void) = ^() {
return *x;
};
return my_block(); // should report null deref here
}
- (int)capturedNoNullDeref {
int i = 5;
int* x = &i;
int (^my_block)(void) = ^() {
return *x;
};
x = NULL;
return my_block(); // should not report null deref here
}
@end