[clang] [llvm] Enable fexec-charset option (PR #138895)

Hubert Tong via cfe-commits cfe-commits at lists.llvm.org
Thu Sep 25 22:14:38 PDT 2025


================
@@ -2191,6 +2243,16 @@ void StringLiteralParser::init(ArrayRef<Token> StringToks){
         if (CopyStringFragment(StringToks[i], ThisTokBegin, BeforeCRLF))
           hadError = true;
 
+        if (!hadError && Converter) {
+          assert(Kind != tok::wide_string_literal &&
+                 "Wide character translation not supported");
+          SmallString<256> CpConv;
+          int ResultLength = BeforeCRLF.size() * CharByteWidth;
+          char *Cp = ResultPtr - ResultLength;
+          Converter->convert(StringRef(Cp, ResultLength), CpConv);
+          memcpy(Cp, CpConv.data(), ResultLength);
----------------
hubert-reinterpretcast wrote:

It can read past the converted buffer too.

https://github.com/llvm/llvm-project/pull/138895


More information about the cfe-commits mailing list