[PATCH] D125620: [Clang] Fix diagnostics formatting

2022-05-14 Thread Tee KOBAYASHI via Phabricator via cfe-commits
xtkoba added a comment.

The issue was first reported by @dev-bz at GitHub in 
https://github.com/termux/termux-packages/issues/9619.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D125620/new/

https://reviews.llvm.org/D125620

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D125620: [Clang] Fix diagnostics formatting

2022-05-14 Thread Tee KOBAYASHI via Phabricator via cfe-commits
xtkoba created this revision.
Herald added a project: All.
xtkoba requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

When a `#warning` directive is followed by tokens containing non-ASCII 
characters encoded in UTF-8, a broken string can be printed out as a diagnostic 
message on some systems. This is because the current code assumes `char` to be 
`signed char`, whereas on some systems `char` is in fact `unsigned char`.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D125620

Files:
  clang/lib/Basic/Diagnostic.cpp


Index: clang/lib/Basic/Diagnostic.cpp
===
--- clang/lib/Basic/Diagnostic.cpp
+++ clang/lib/Basic/Diagnostic.cpp
@@ -811,7 +811,7 @@
   StringRef(DiagStr, DiagEnd - DiagStr).equals("%0") &&
   getArgKind(0) == DiagnosticsEngine::ak_std_string) {
 const std::string  = getArgStdStr(0);
-for (char c : S) {
+for (signed char c : S) {
   if (llvm::sys::locale::isPrint(c) || c == '\t') {
 OutStr.push_back(c);
   }


Index: clang/lib/Basic/Diagnostic.cpp
===
--- clang/lib/Basic/Diagnostic.cpp
+++ clang/lib/Basic/Diagnostic.cpp
@@ -811,7 +811,7 @@
   StringRef(DiagStr, DiagEnd - DiagStr).equals("%0") &&
   getArgKind(0) == DiagnosticsEngine::ak_std_string) {
 const std::string  = getArgStdStr(0);
-for (char c : S) {
+for (signed char c : S) {
   if (llvm::sys::locale::isPrint(c) || c == '\t') {
 OutStr.push_back(c);
   }
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits