aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Checker/RegionStore.cpp4
-rw-r--r--test/Analysis/misc-ps.m7
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/Checker/RegionStore.cpp b/lib/Checker/RegionStore.cpp
index 2e212db3e6..36022d5737 100644
--- a/lib/Checker/RegionStore.cpp
+++ b/lib/Checker/RegionStore.cpp
@@ -1407,7 +1407,9 @@ SVal RegionStoreManager::RetrieveVar(Store store, const VarRegion *R) {
if (T->isIntegerType())
return ValMgr.makeIntVal(0, T);
-
+ if (T->isPointerType())
+ return ValMgr.makeNull();
+
return UnknownVal();
}
diff --git a/test/Analysis/misc-ps.m b/test/Analysis/misc-ps.m
index c1b3d9788b..20eed9cb3d 100644
--- a/test/Analysis/misc-ps.m
+++ b/test/Analysis/misc-ps.m
@@ -908,3 +908,10 @@ void rdar7582031_test_static_init_zero() {
int *p = 0;
*p = 0xDEADBEEF;
}
+void rdar7582031_test_static_init_zero_b() {
+ static void* x;
+ if (x == 0)
+ return;
+ int *p = 0;
+ *p = 0xDEADBEEF;
+}