From: Ted Kremenek Date: Fri, 3 Apr 2009 19:02:51 +0000 (+0000) Subject: retain/release checker: don't track NSPanel until we have better reasoning about X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=99d026939024471a9e43267593d2ddff9f61ce46;p=clang retain/release checker: don't track NSPanel until we have better reasoning about the subtle ownership issues of such objects. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68397 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/CFRefCount.cpp b/lib/Analysis/CFRefCount.cpp index 95df6b4c1c..4473dbf086 100644 --- a/lib/Analysis/CFRefCount.cpp +++ b/lib/Analysis/CFRefCount.cpp @@ -1184,8 +1184,10 @@ void RetainSummaryManager::InitializeMethodSummaries() { // Thus, we need to track an NSWindow's display status. // This is tracked in . // See also http://llvm.org/bugs/show_bug.cgi?id=3714. - addClassMethSummary("NSWindow", "alloc", - getPersistentSummary(RetEffect::MakeNoRet())); + RetainSummary *NoTrackYet = getPersistentSummary(RetEffect::MakeNoRet()); + + addClassMethSummary("NSWindow", "alloc", NoTrackYet); + #if 0 RetainSummary *NSWindowSumm = @@ -1200,6 +1202,10 @@ void RetainSummaryManager::InitializeMethodSummaries() { // For NSPanel (which subclasses NSWindow), allocated objects are not // self-owned. + // FIXME: For now we don't track NSPanels. object for the same reason + // as for NSWindow objects. + addClassMethSummary("NSPanel", "alloc", NoTrackYet); + addInstMethSummary("NSPanel", InitSumm, "initWithContentRect", "styleMask", "backing", "defer", NULL); diff --git a/test/Analysis/NSPanel.m b/test/Analysis/NSPanel.m index 8f8f5626b3..c4d4c22540 100644 --- a/test/Analysis/NSPanel.m +++ b/test/Analysis/NSPanel.m @@ -82,7 +82,7 @@ extern NSString *NSWindowDidBecomeKeyNotification; } - (void)myMethod2 { - NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:(BOOL)1]; // expected-warning{{leak}} + NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:(BOOL)1]; // no-warning [panels addObject:panel]; }