diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2010-02-08 19:51:59 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2010-02-08 19:51:59 +0000 |
commit | 16fe0bcb266027378ee319b367e14d360df8d72a (patch) | |
tree | f8124b34c634e1eb3890061a25392071e87de812 | |
parent | beb1238a85cf0fd40a946c7c79edeb3a0a8c9971 (diff) | |
download | bcm5719-llvm-16fe0bcb266027378ee319b367e14d360df8d72a.tar.gz bcm5719-llvm-16fe0bcb266027378ee319b367e14d360df8d72a.zip |
Simplify another switch/strcmp construct. No functionality/performance change.
llvm-svn: 95561
-rw-r--r-- | clang/lib/Checker/BasicObjCFoundationChecks.cpp | 71 |
1 files changed, 16 insertions, 55 deletions
diff --git a/clang/lib/Checker/BasicObjCFoundationChecks.cpp b/clang/lib/Checker/BasicObjCFoundationChecks.cpp index b1ecfeb1447..d6c09a2e04a 100644 --- a/clang/lib/Checker/BasicObjCFoundationChecks.cpp +++ b/clang/lib/Checker/BasicObjCFoundationChecks.cpp @@ -163,61 +163,22 @@ bool BasicObjCFoundationChecks::AuditNSString(ExplodedNode* N, // FIXME: This is going to be really slow doing these checks with // lexical comparisons. - std::string name = S.getAsString(); - assert (!name.empty()); - const char* cstr = &name[0]; - unsigned len = name.size(); - - switch (len) { - default: - break; - case 8: - if (!strcmp(cstr, "compare:")) - return CheckNilArg(N, 0); - - break; - - case 15: - // FIXME: Checking for initWithFormat: will not work in most cases - // yet because [NSString alloc] returns id, not NSString*. We will - // need support for tracking expected-type information in the analyzer - // to find these errors. - if (!strcmp(cstr, "initWithFormat:")) - return CheckNilArg(N, 0); - - break; - - case 16: - if (!strcmp(cstr, "compare:options:")) - return CheckNilArg(N, 0); - - break; - - case 22: - if (!strcmp(cstr, "compare:options:range:")) - return CheckNilArg(N, 0); - - break; - - case 23: - - if (!strcmp(cstr, "caseInsensitiveCompare:")) - return CheckNilArg(N, 0); - - break; - - case 29: - if (!strcmp(cstr, "compare:options:range:locale:")) - return CheckNilArg(N, 0); - - break; - - case 37: - if (!strcmp(cstr, "componentsSeparatedByCharactersInSet:")) - return CheckNilArg(N, 0); - - break; - } + std::string NameStr = S.getAsString(); + llvm::StringRef Name(NameStr); + assert(!Name.empty()); + + // FIXME: Checking for initWithFormat: will not work in most cases + // yet because [NSString alloc] returns id, not NSString*. We will + // need support for tracking expected-type information in the analyzer + // to find these errors. + if (Name == "caseInsensitiveCompare:" || + Name == "compare:" || + Name == "compare:options:" || + Name == "compare:options:range:" || + Name == "compare:options:range:locale:" || + Name == "componentsSeparatedByCharactersInSet:" || + Name == "initWithFormat:") + return CheckNilArg(N, 0); return false; } |