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 | b98c6fe8877b809d4da3020692c9b38f972b92cf (patch) | |
tree | 134159df94127a6c4471f0e45fa49b67c6cb69f6 /test/Analysis/malloc-annotations.c | |
parent | 40a94e299eadc5b80bd1dabf948d25d7c8cc4aa5 (diff) |
[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.)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174468 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Analysis/malloc-annotations.c')
-rw-r--r-- | test/Analysis/malloc-annotations.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/test/Analysis/malloc-annotations.c b/test/Analysis/malloc-annotations.c index 3a260c3aef..bdd50c6be5 100644 --- a/test/Analysis/malloc-annotations.c +++ b/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 + + |