From c3dd2af4283d551437d40649b4a383cd14727ef1 Mon Sep 17 00:00:00 2001 From: Nick Hildenbrandt Date: Mon, 30 Sep 2002 21:11:55 +0000 Subject: [PATCH] Fixed to properly escape quotes in strings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3991 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/CBackend/CBackend.cpp | 7 ++++++- lib/Target/CBackend/Writer.cpp | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp index e54d4575125..8b7aba9398a 100644 --- a/lib/Target/CBackend/CBackend.cpp +++ b/lib/Target/CBackend/CBackend.cpp @@ -287,7 +287,10 @@ void CWriter::printConstantArray(ConstantArray *CPA) { (unsigned char)cast(CPA->getOperand(i))->getValue(); if (isprint(C)) { - Out << C; + if (C == '"') + Out << "\\\""; + else + Out << C; } else { switch (C) { case '\n': Out << "\\n"; break; @@ -295,6 +298,8 @@ void CWriter::printConstantArray(ConstantArray *CPA) { case '\r': Out << "\\r"; break; case '\v': Out << "\\v"; break; case '\a': Out << "\\a"; break; + case '\"': Out << "\\\""; break; + case '\'': Out << "\\\'"; break; default: Out << "\\x"; Out << ( C/16 < 10) ? ( C/16 +'0') : ( C/16 -10+'A'); diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp index e54d4575125..8b7aba9398a 100644 --- a/lib/Target/CBackend/Writer.cpp +++ b/lib/Target/CBackend/Writer.cpp @@ -287,7 +287,10 @@ void CWriter::printConstantArray(ConstantArray *CPA) { (unsigned char)cast(CPA->getOperand(i))->getValue(); if (isprint(C)) { - Out << C; + if (C == '"') + Out << "\\\""; + else + Out << C; } else { switch (C) { case '\n': Out << "\\n"; break; @@ -295,6 +298,8 @@ void CWriter::printConstantArray(ConstantArray *CPA) { case '\r': Out << "\\r"; break; case '\v': Out << "\\v"; break; case '\a': Out << "\\a"; break; + case '\"': Out << "\\\""; break; + case '\'': Out << "\\\'"; break; default: Out << "\\x"; Out << ( C/16 < 10) ? ( C/16 +'0') : ( C/16 -10+'A');