diff options
Diffstat (limited to 'cpp/src/Slice/PythonUtil.cpp')
-rw-r--r-- | cpp/src/Slice/PythonUtil.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/cpp/src/Slice/PythonUtil.cpp b/cpp/src/Slice/PythonUtil.cpp index 92f657e8221..38619b6db3e 100644 --- a/cpp/src/Slice/PythonUtil.cpp +++ b/cpp/src/Slice/PythonUtil.cpp @@ -1902,7 +1902,7 @@ Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const Syntax } s += "\\"; } - + // // An even number of slash \ will escape the backslash and // the codepoint will be interpreted as its charaters @@ -1916,16 +1916,16 @@ Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const Syntax // Convert codepoint to UTF8 bytes and write the escaped bytes // _out << s.substr(0, s.size() - 1); - + size_t sz = value[j] == 'U' ? 8 : 4; string codepoint = value.substr(j + 1, sz); assert(codepoint.size() == sz); IceUtil::Int64 v = IceUtilInternal::strToInt64(codepoint.c_str(), 0, 16); - + vector<unsigned int> u32buffer; - u32buffer.push_back(v); - + u32buffer.push_back(static_cast<unsigned int>(v)); + vector<unsigned char> u8buffer; IceUtilInternal::ConversionResult result = convertUTF32ToUTF8(u32buffer, u8buffer, IceUtil::lenientConversion); switch(result) @@ -1942,7 +1942,7 @@ Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const Syntax throw IceUtil::IllegalConversionException(__FILE__, __LINE__); } } - + ostringstream s; for(vector<unsigned char>::const_iterator q = u8buffer.begin(); q != u8buffer.end(); ++q) { @@ -1953,7 +1953,7 @@ Slice::Python::CodeVisitor::writeConstantValue(const TypePtr& type, const Syntax s << static_cast<unsigned int>(*q); } _out << s.str(); - + i = j + 1 + sz; } else |