From 9cbcd09be001766d4e494ab852ef84acb63c020c Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Thu, 16 Nov 2023 21:02:00 -0800 Subject: [PATCH] fix UTF-16 decoding bug --- src/PlayerSubordinates.cc | 6 ++++-- src/Text.hh | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/PlayerSubordinates.cc b/src/PlayerSubordinates.cc index d9d82980..1d1c2720 100644 --- a/src/PlayerSubordinates.cc +++ b/src/PlayerSubordinates.cc @@ -154,7 +154,8 @@ PlayerDispDataBB PlayerDispDataDCPCV3::to_bb(uint8_t to_language, uint8_t from_l bb.stats = this->stats; bb.visual = this->visual; bb.visual.name.encode(" 0"); - bb.name.encode(this->visual.name.decode(from_language), to_language); + string decoded_name = this->visual.name.decode(from_language); + bb.name.encode(decoded_name, to_language); bb.config = this->config; bb.technique_levels_v1 = this->technique_levels_v1; return bb; @@ -164,7 +165,8 @@ PlayerDispDataDCPCV3 PlayerDispDataBB::to_dcpcv3(uint8_t to_language, uint8_t fr PlayerDispDataDCPCV3 ret; ret.stats = this->stats; ret.visual = this->visual; - ret.visual.name.encode(this->name.decode(from_language), to_language); + string decoded_name = this->name.decode(from_language); + ret.visual.name.encode(decoded_name, to_language); ret.config = this->config; ret.technique_levels_v1 = this->technique_levels_v1; return ret; diff --git a/src/Text.hh b/src/Text.hh index bff11181..88efc80c 100644 --- a/src/Text.hh +++ b/src/Text.hh @@ -406,7 +406,7 @@ struct pstring { case TextEncoding::SJIS: return tt_sjis_to_utf8(this->data, this->used_chars_8()); case TextEncoding::UTF16: - return tt_utf16_to_utf8(this->data, this->used_chars_16()); + return tt_utf16_to_utf8(this->data, this->used_chars_16() * 2); case TextEncoding::UTF8: return std::string(reinterpret_cast(&this->data[0]), this->used_chars_8()); case TextEncoding::CHALLENGE16: {