From: Eli Friedman Date: Sat, 5 Nov 2011 00:41:04 +0000 (+0000) Subject: Fix one last place where we weren't writing into a string literal consistently. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=22508f410b3d727d5c557af3304c0a1bad94999e;p=clang Fix one last place where we weren't writing into a string literal consistently. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143769 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Lex/LiteralSupport.cpp b/lib/Lex/LiteralSupport.cpp index de10c3a824..16f02f4130 100644 --- a/lib/Lex/LiteralSupport.cpp +++ b/lib/Lex/LiteralSupport.cpp @@ -1112,8 +1112,20 @@ void StringLiteralParser::init(const Token *StringToks, unsigned NumStringToks){ } if (Pascal) { - ResultBuf[0] = ResultPtr-&ResultBuf[0]-1; - ResultBuf[0] /= CharByteWidth; + if (CharByteWidth == 4) { + // FIXME: Make the type of the result buffer correct instead of + // using reinterpret_cast. + UTF32 *ResultWidePtr = reinterpret_cast(ResultBuf.data()); + ResultWidePtr[0] = GetNumStringChars() - 1; + } else if (CharByteWidth == 2) { + // FIXME: Make the type of the result buffer correct instead of + // using reinterpret_cast. + UTF16 *ResultWidePtr = reinterpret_cast(ResultBuf.data()); + ResultWidePtr[0] = GetNumStringChars() - 1; + } else { + assert(CharByteWidth == 1 && "Unexpected char width"); + ResultBuf[0] = GetNumStringChars() - 1; + } // Verify that pascal strings aren't too large. if (GetStringLength() > 256) {