diff options
author | John Hodge <tpg@ucc.asn.au> | 2017-04-16 11:41:47 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2017-04-16 11:41:47 +0800 |
commit | 9c662e64f282249d07b08c7eaa99f8613a637934 (patch) | |
tree | 24b8ae89e559c719220acc6cb740e97b217aab24 /src/trans/codegen_c.cpp | |
parent | 3a1797867580bc17a63a49bdf340da1a3188c676 (diff) | |
download | mrust-9c662e64f282249d07b08c7eaa99f8613a637934.tar.gz |
Codegen C - Fix incorrect escaped values
Diffstat (limited to 'src/trans/codegen_c.cpp')
-rw-r--r-- | src/trans/codegen_c.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp index 165486ef..983bdfd4 100644 --- a/src/trans/codegen_c.cpp +++ b/src/trans/codegen_c.cpp @@ -193,6 +193,7 @@ namespace { ::std::stringstream cmd_ss; for(const auto& arg : args) { + // TODO: use a formatter specific to shell escaping cmd_ss << "\"" << FmtEscaped(arg) << "\" "; } DEBUG("- " << cmd_ss.str()); @@ -1376,6 +1377,7 @@ namespace { m_of << "\t__asm__ "; if(is_volatile) m_of << "__volatile__"; // TODO: Convert format string? + // TODO: Use a C-specific escaper here. m_of << "(\"" << (is_intel ? ".syntax intel; " : "") << FmtEscaped(e.tpl) << (is_intel ? ".syntax att; " : "") << "\""; m_of << ": "; for(unsigned int i = 0; i < e.outputs.size(); i ++ ) @@ -2718,7 +2720,7 @@ namespace { if( ' ' <= v && v < 0x7F && v != '"' && v != '\\' ) m_of << v; else - m_of << "\\" << (unsigned int)v; + m_of << "\\" << ((unsigned int)v & 0xFF); } m_of << "\"" << ::std::dec; m_of << ";\n\t"; @@ -2924,7 +2926,7 @@ namespace { if( ' ' <= v && v < 0x7F && v != '"' && v != '\\' ) m_of << v; else - m_of << "\\" << (unsigned int)v; + m_of << "\\" << ((unsigned int)v & 0xFF); } m_of << "\"" << ::std::dec; ), @@ -2934,7 +2936,7 @@ namespace { if( ' ' <= v && v < 0x7F && v != '"' && v != '\\' ) m_of << v; else - m_of << "\\" << (unsigned int)v; + m_of << "\\" << ((unsigned int)v & 0xFF); } m_of << "\", " << ::std::dec << c.size() << ")"; ), |