[clang] [analyzer] Fix note for member reference (PR #68691)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 12 04:55:59 PDT 2023
================
@@ -41,3 +41,34 @@ int testRefToNullPtr2() {
return *p2; //expected-warning {{Dereference of null pointer}}
// expected-note at -1{{Dereference of null pointer}}
}
+
+void testMemberNullPointerDeref() {
+ struct Wrapper {char c; int *ptr; };
+ Wrapper w = {'a', nullptr}; // expected-note {{'w.ptr' initialized to a null pointer value}}
+ *w.ptr = 1; //expected-warning {{Dereference of null pointer}}
+ // expected-note at -1{{Dereference of null pointer}}
+}
+
+void testMemberNullReferenceDeref() {
+ struct Wrapper {char c; int &ref; };
+ Wrapper w = {.c = 'a', .ref = *(int *)0 }; // expected-note {{'w.ref' initialized to a null pointer value}}
+ // expected-warning at -1 {{binding dereferenced null pointer to reference has undefined behavior}}
+ w.ref = 1; //expected-warning {{Dereference of null pointer}}
+ // expected-note at -1{{Dereference of null pointer}}
+}
+
+void testReferenceToPointerWithNullptr() {
+ int *i = nullptr; // expected-note {{'i' initialized to a null pointer value}}
+ struct Wrapper {char c; int *&a;};
+ Wrapper w {'c', i}; // expected-note{{'w.a' initialized here}}
+ *(w.a) = 25; // expected-warning {{Dereference of null pointer}}
+ // expected-note at -1 {{Dereference of null pointer}}
+}
+
+void aaa() {
----------------
DonatNagyE wrote:
```suggestion
void testNullReferenceToPointer() {
```
https://github.com/llvm/llvm-project/pull/68691
More information about the cfe-commits
mailing list