[PATCH] D79810: [FileCheck] Fix isalpha/isalnum calls
Joel E. Denny via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu May 14 17:26:46 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG5df55bc7a46f: [FileCheck] Fix isalpha/isalnum calls (authored by jdenny).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D79810/new/
https://reviews.llvm.org/D79810
Files:
llvm/lib/Support/FileCheck.cpp
llvm/test/FileCheck/bad-char.txt
Index: llvm/test/FileCheck/bad-char.txt
===================================================================
--- /dev/null
+++ llvm/test/FileCheck/bad-char.txt
@@ -0,0 +1,42 @@
+# This file contains characters that render as spaces (at least for me in vim)
+# but are encoded as 160. Each is indicated with a "^" on the following line.
+# FileCheck used to call functions like isalnum on each without casting to
+# unsigned char first, so it sign-extended beyond what unsigned char or EOF can
+# represent. C says that has undefined behavior, and it has caused stack dumps
+# under Windows.
+
+//------------------------------------------------
+RUN: %ProtectFileCheckOutput \
+RUN: not FileCheck -check-prefix=BEFORE-PREFIX %s < /dev/null 2>&1 | \
+RUN: FileCheck -check-prefix=ERR-EMPTY-CHECK %s
+
+ BEFORE-PREFIX:
+^
+ERR-EMPTY-CHECK: error: found empty check string
+
+//------------------------------------------------
+RUN: %ProtectFileCheckOutput \
+RUN: not FileCheck -check-prefix=AFTER-PREFIX %s < /dev/null 2>&1 | \
+RUN: FileCheck -check-prefix=ERR-NO-CHECK %s
+
+AFTER-PREFIX :
+ ^
+ERR-NO-CHECK: error: no check strings found
+
+//------------------------------------------------
+RUN: %ProtectFileCheckOutput \
+RUN: not FileCheck -check-prefix=BEFORE-VAR %s < /dev/null 2>&1 | \
+RUN: FileCheck -check-prefix=ERR-BAD-VAR %s
+
+BEFORE-VAR: [[ VAR:]]
+ ^
+ERR-BAD-VAR: error: invalid variable name
+
+//------------------------------------------------
+RUN: %ProtectFileCheckOutput \
+RUN: not FileCheck -check-prefix=AFTER-VAR %s < /dev/null 2>&1 | \
+RUN: FileCheck -check-prefix=ERR-BAD-STRING-VAR %s
+
+AFTER-VAR: [[VAR :]]
+ ^
+ERR-BAD-STRING-VAR: error: invalid name in string variable definition
Index: llvm/lib/Support/FileCheck.cpp
===================================================================
--- llvm/lib/Support/FileCheck.cpp
+++ llvm/lib/Support/FileCheck.cpp
@@ -151,7 +151,7 @@
return Regex::escape(*VarVal);
}
-bool Pattern::isValidVarNameStart(char C) { return C == '_' || isalpha(C); }
+bool Pattern::isValidVarNameStart(char C) { return C == '_' || isAlpha(C); }
Expected<Pattern::VariableProperties>
Pattern::parseVariable(StringRef &Str, const SourceMgr &SM) {
@@ -171,7 +171,7 @@
return ErrorDiagnostic::get(SM, Str, "invalid variable name");
// Variable names are composed of alphanumeric characters and underscores.
- if (Str[I] != '_' && !isalnum(Str[I]))
+ if (Str[I] != '_' && !isAlnum(Str[I]))
break;
ParsedOneChar = true;
}
@@ -1079,7 +1079,7 @@
}
static bool IsPartOfWord(char c) {
- return (isalnum(c) || c == '-' || c == '_');
+ return (isAlnum(c) || c == '-' || c == '_');
}
Check::FileCheckType &Check::FileCheckType::setCount(int C) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79810.264132.patch
Type: text/x-patch
Size: 2797 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200515/e5baddb4/attachment.bin>
More information about the llvm-commits
mailing list