Blake Bender created GEODE-9412:
-----------------------------------
Summary: App crashes when translating string with certain Unicode
characters (exception thrown across managed/native boundary)
Key: GEODE-9412
URL: https://issues.apache.org/jira/browse/GEODE-9412
Project: Geode
Issue Type: Bug
Components: native client
Reporter: Blake Bender
tl;dr, we're not translating unicode correctly between .net and C++.
When a unicode string comes into the CLI layer, we use
`marshal_as<std::string>` to translate, then assume this yields UTF-8. In
fact, what it yields is a string encoded in a) whatever the local code page is
for the system, or b) the default code page for the app, if one exists in the
manifest. In the C++ layer, we then assume the string is UTF-8, and for a PUT,
attempt to translate into Java-modified UTF-8, which ends up throwing an
uncaught exception when it encounters a character that is not a valid UTF-8
start code. When this exception hits the native/managed boundary, the app
crashes.
To avoid this issue, we need to `marshal_as<std::wstring>`, then use `std`
conversion functions to arrive at UTF-8, and pass that down to the C++ layer.
We also need to use the reverse process when sending strings back up to CLI.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)