diff options
author | Anna Zaks <ganna@apple.com> | 2013-02-06 00:01:14 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2013-02-06 00:01:14 +0000 |
commit | 258f9357ef613372d5b5f96d0a9f7f98173dbc3e (patch) | |
tree | f7869e8d95e3b4ba5627e9edb3a74bdea94cd99d /clang/test/Analysis/malloc-annotations.c | |
parent | ae89a0fbc24aa7cdc1c35aa1b55d3685f7067f4a (diff) | |
download | bcm5719-llvm-258f9357ef613372d5b5f96d0a9f7f98173dbc3e.tar.gz bcm5719-llvm-258f9357ef613372d5b5f96d0a9f7f98173dbc3e.zip |
[analyzer]Revert part of r161511; suppresses leak false positives in C++
This is a "quick fix".
The underlining issue is that when a const pointer to a struct is passed
into a function, we do not invalidate the pointer fields. This results
in false positives that are common in C++ (since copy constructors are
prevalent). (Silences two llvm false positives.)
llvm-svn: 174468
Diffstat (limited to 'clang/test/Analysis/malloc-annotations.c')
-rw-r--r-- | clang/test/Analysis/malloc-annotations.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/clang/test/Analysis/malloc-annotations.c b/clang/test/Analysis/malloc-annotations.c index 3a260c3aefd..bdd50c6be5a 100644 --- a/clang/test/Analysis/malloc-annotations.c +++ b/clang/test/Analysis/malloc-annotations.c @@ -70,11 +70,6 @@ void af1_c() { myglobalpointer = my_malloc(12); // no-warning } -void af1_d() { - struct stuff mystuff; - mystuff.somefield = my_malloc(12); -} // expected-warning{{Memory is never released; potential leak}} - // Test that we can pass out allocated memory via pointer-to-pointer. void af1_e(void **pp) { *pp = my_malloc(42); // no-warning @@ -267,3 +262,14 @@ void testMultipleFreeAnnotations() { my_freeBoth(p, q); } +// ---------------------------------------------------------------------------- + +// False negatives. + +// Pending on removal of the escaping on assignment to struct fields. +void af1_d() { + struct stuff mystuff; + mystuff.somefield = my_malloc(12); +} // missing warning + + |