diff options
author | Marcel Admiraal <madmiraal@users.noreply.github.com> | 2020-03-20 16:49:50 +0000 |
---|---|---|
committer | Marcel Admiraal <madmiraal@users.noreply.github.com> | 2020-03-20 17:23:40 +0000 |
commit | e74f8aaaf1720b0a6370205c8ef9d47028657889 (patch) | |
tree | 4767ff450505bccdd7b198edc45f0212ebdcb3ef /platform | |
parent | cce0a27ec7dd7c11fcb37eb724b0b7e97b3b1478 (diff) |
Fix Android export throwing Unicode errors.
Diffstat (limited to 'platform')
-rw-r--r-- | platform/android/export/export.cpp | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index e7d4bc6c51..192ad97990 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -1179,14 +1179,32 @@ class EditorExportPlatformAndroid : public EditorExportPlatform { static String _parse_string(const uint8_t *p_bytes, bool p_utf8) { uint32_t offset = 0; - uint32_t len = decode_uint16(&p_bytes[offset]); + uint32_t len = 0; if (p_utf8) { - //don't know how to read extended utf8, this will have to be for now - len >>= 8; + uint8_t byte = p_bytes[offset]; + if (byte & 0x80) + offset += 2; + else + offset += 1; + byte = p_bytes[offset]; + offset++; + if (byte & 0x80) { + len = byte & 0x7F; + len = (len << 8) + p_bytes[offset]; + offset++; + } else { + len = byte; + } + } else { + len = decode_uint16(&p_bytes[offset]); + offset += 2; + if (len & 0x8000) { + len &= 0x7FFF; + len = (len << 16) + decode_uint16(&p_bytes[offset]); + offset += 2; + } } - offset += 2; - //printf("len %i, unicode: %i\n",len,int(p_utf8)); if (p_utf8) { |