aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/VMCore/Metadata.cpp18
1 files changed, 6 insertions, 12 deletions
diff --git a/lib/VMCore/Metadata.cpp b/lib/VMCore/Metadata.cpp
index ce5cc7eed1..422a21545a 100644
--- a/lib/VMCore/Metadata.cpp
+++ b/lib/VMCore/Metadata.cpp
@@ -259,23 +259,17 @@ unsigned MetadataContext::registerMDKind(const StringRef Name) {
/// isValidName - Return true if Name is a valid custom metadata handler name.
bool MetadataContext::isValidName(const StringRef MDName) {
- const char *Name = MDName.data();
- if (!Name)
+ if (MDName.empty())
return false;
- if (!isalpha(*Name))
+ if (!isalpha(MDName[1]))
return false;
- unsigned Length = strlen(Name);
- unsigned Count = 1;
- ++Name;
- while (Name &&
- (isalnum(*Name) || *Name == '_' || *Name == '-' || *Name == '.')) {
- ++Name;
- ++Count;
+ for (StringRef::iterator I = MDName.begin() + 1, E = MDName.end(); I != E;
+ ++I) {
+ if (!isalnum(*I) && *I != '_' && *I != '-' && *I != '.')
+ return false;
}
- if (Length != Count)
- return false;
return true;
}