diff options
Diffstat (limited to 'clang/test/Analysis/osobject-retain-release.cpp')
| -rw-r--r-- | clang/test/Analysis/osobject-retain-release.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/test/Analysis/osobject-retain-release.cpp b/clang/test/Analysis/osobject-retain-release.cpp index 4e26c03bc26..17360ac3220 100644 --- a/clang/test/Analysis/osobject-retain-release.cpp +++ b/clang/test/Analysis/osobject-retain-release.cpp @@ -43,6 +43,7 @@ struct OSArray : public OSObject { struct OtherStruct { static void doNothingToArray(OSArray *array); + OtherStruct(OSArray *arr); }; struct OSMetaClassBase { @@ -55,6 +56,12 @@ void check_no_invalidation() { } // expected-warning{{Potential leak of an object stored into 'arr'}} // expected-note@-1{{Object leaked}} +void check_no_invalidation_other_struct() { + OSArray *arr = OSArray::withCapacity(10); // expected-note{{Call to function 'withCapacity' returns an OSObject of type struct OSArray * with a +1 retain count}} + OtherStruct other(arr); // expected-warning{{Potential leak}} + // expected-note@-1{{Object leaked}} +} + void check_rc_consumed() { OSArray *arr = OSArray::withCapacity(10); OSArray::consumeArray(arr); |

