From 4b3be7eee34dab326fe4fc6202c02cea0aeb483c Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Thu, 30 Nov 2023 09:48:40 -0800 Subject: [PATCH] add fallback for undecodable text in quest disassembler --- src/QuestScript.cc | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/QuestScript.cc b/src/QuestScript.cc index 3fe2eb95..724ed339 100644 --- a/src/QuestScript.cc +++ b/src/QuestScript.cc @@ -40,24 +40,28 @@ static TextEncoding encoding_for_language(uint8_t language) { static string escape_string(const string& data, TextEncoding encoding = TextEncoding::UTF8) { string decoded; - switch (encoding) { - case TextEncoding::UTF8: - decoded = data; - break; - case TextEncoding::UTF16: - decoded = tt_utf16_to_utf8(data); - break; - case TextEncoding::SJIS: - decoded = tt_sjis_to_utf8(data); - break; - case TextEncoding::ISO8859: - decoded = tt_8859_to_utf8(data); - break; - case TextEncoding::ASCII: - decoded = tt_ascii_to_utf8(data); - break; - default: - return format_data_string(data); + try { + switch (encoding) { + case TextEncoding::UTF8: + decoded = data; + break; + case TextEncoding::UTF16: + decoded = tt_utf16_to_utf8(data); + break; + case TextEncoding::SJIS: + decoded = tt_sjis_to_utf8(data); + break; + case TextEncoding::ISO8859: + decoded = tt_8859_to_utf8(data); + break; + case TextEncoding::ASCII: + decoded = tt_ascii_to_utf8(data); + break; + default: + return format_data_string(data); + } + } catch (const runtime_error&) { + return format_data_string(data); } string ret = "\"";