diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-10-24 21:22:44 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-10-24 21:22:44 +0000 |
commit | 920406b5ca28ca16c6aebc606138321694e1dc9d (patch) | |
tree | e93c33ff1cf4edf665675d3b8ab240370984ce4c /clang/lib/Analysis/CFRefCount.cpp | |
parent | e45896fc4fd39a8b7e00721fdc62f217d3353014 (diff) | |
download | bcm5719-llvm-920406b5ca28ca16c6aebc606138321694e1dc9d.tar.gz bcm5719-llvm-920406b5ca28ca16c6aebc606138321694e1dc9d.zip |
Use "followsFundamentalRule" to determine if an instance method allocates memory.
llvm-svn: 58114
Diffstat (limited to 'clang/lib/Analysis/CFRefCount.cpp')
-rw-r--r-- | clang/lib/Analysis/CFRefCount.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/clang/lib/Analysis/CFRefCount.cpp b/clang/lib/Analysis/CFRefCount.cpp index 78c9a40eeca..21c2ecf4b94 100644 --- a/clang/lib/Analysis/CFRefCount.cpp +++ b/clang/lib/Analysis/CFRefCount.cpp @@ -951,8 +951,7 @@ RetainSummaryManager::getMethodSummary(ObjCMessageExpr* ME, if (!isNSType(ME->getReceiver()->getType())) return 0; - if (CStrInCStrNoCase(s, "create") || CStrInCStrNoCase(s, "copy") || - CStrInCStrNoCase(s, "new")) { + if (followsFundamentalRule(s)) { RetEffect E = isGCEnabled() ? RetEffect::MakeNoRet() : RetEffect::MakeOwned(true); @@ -2226,13 +2225,14 @@ namespace { } else { if (getTF().isGCEnabled()) - return "leak of returned object (GC)"; + return "[naming convention] leak of returned object (GC)"; if (getTF().getLangOptions().getGCMode() == LangOptions::HybridGC) - return "leak of returned object (hybrid MM, non-GC)"; + return "[naming convention] leak of returned object (hybrid MM, " + "non-GC)"; assert (getTF().getLangOptions().getGCMode() == LangOptions::NonGC); - return "leak of returned object"; + return "[naming convention] leak of returned object"; } } @@ -2617,12 +2617,13 @@ PathDiagnosticPiece* CFRefReport::getEndPath(BugReporter& br, ObjCMethodDecl& MD = cast<ObjCMethodDecl>(BR.getGraph().getCodeDecl()); os << " is returned from a method whose name ('" << MD.getSelector().getName() - << "') does not contain 'create', " - "'copy', or 'new'. This violates the naming convention rules given" + << "') does not contain 'create' or 'copy' or otherwise starts with" + " 'new' or 'alloc'. This violates the naming convention rules given" " in the Memory Management Guide for Cocoa (object leaked)."; } else - os << " is no longer referenced after this point and has a retain count of +" + os << " is no longer referenced after this point and has a retain count of" + " +" << RV->getCount() << " (object leaked)."; return new PathDiagnosticPiece(L, os.str(), Hint); |