summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/inner-pointer.cpp
diff options
context:
space:
mode:
authorReka Kovacs <rekanikolett@gmail.com>2018-08-03 20:42:02 +0000
committerReka Kovacs <rekanikolett@gmail.com>2018-08-03 20:42:02 +0000
commitbfd9cfdeeb20c0c48c71447140ca0cdc55b7b5dd (patch)
treea15d3029bc65af59d28846ef7179ec7b876909c7 /clang/test/Analysis/inner-pointer.cpp
parent4dfe279e00d56f23c37a526b3abe0a7c89269fa7 (diff)
downloadbcm5719-llvm-bfd9cfdeeb20c0c48c71447140ca0cdc55b7b5dd.tar.gz
bcm5719-llvm-bfd9cfdeeb20c0c48c71447140ca0cdc55b7b5dd.zip
[analyzer] Add test for a crash fixed in r338775.
Do not crash if a CXXRecordDecl cannot be obtained for an object. Special thanks for the reproduction to Alexander Kornienko. llvm-svn: 338918
Diffstat (limited to 'clang/test/Analysis/inner-pointer.cpp')
-rw-r--r--clang/test/Analysis/inner-pointer.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/test/Analysis/inner-pointer.cpp b/clang/test/Analysis/inner-pointer.cpp
index 6f9c8a8e8a0..fb8cc8ec33e 100644
--- a/clang/test/Analysis/inner-pointer.cpp
+++ b/clang/test/Analysis/inner-pointer.cpp
@@ -382,3 +382,13 @@ const char *escape_via_return_local() {
// expected-note@-1 {{Inner pointer invalidated by call to destructor}}
} // expected-warning {{Use of memory after it is freed}}
// expected-note@-1 {{Use of memory after it is freed}}
+
+
+char *c();
+class A {};
+
+void no_CXXRecordDecl() {
+ A a, *b;
+ *(void **)&b = c() + 1;
+ *b = a; // no-crash
+}
OpenPOWER on IntegriCloud