From 46b3779ae5c35069f7a3e5ca5356e22f264a0f4a Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sun, 20 Sep 2009 13:21:18 +0000 Subject: Fix bug in LoLEngine::decodeSjis. svn-id: r44208 --- engines/kyra/lol.cpp | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) (limited to 'engines/kyra') diff --git a/engines/kyra/lol.cpp b/engines/kyra/lol.cpp index 449610d382..83c31b42f5 100644 --- a/engines/kyra/lol.cpp +++ b/engines/kyra/lol.cpp @@ -1060,29 +1060,22 @@ void LoLEngine::decodeSjis(const char *src, char *dst) { char d[3]; s[1] = 0; - uint8 cmd = *src++; - - while (cmd) { + uint8 cmd = 0; + while ((cmd = *src++) != 0) { if (cmd == 27) { - cmd = *src & 0x7f; - src++; - - for (int i = 0; i < cmd; i ++) { - *dst++ = *src++; - *dst++ = *src++; - } - cmd = *src++; - + cmd = *src++ & 0x7f; + memcpy(dst, src, cmd * 2); + dst += cmd * 2; + src += cmd * 2; } else { - s[0] = *src++; - Util::decodeString1(s, d); - *dst++ = d[0]; - cmd = *src++; + s[0] = cmd; + int size = Util::decodeString1(s, d); + memcpy(dst, d, size); + dst += size; } } - if (!cmd) - *dst = 0; + *dst = 0; } bool LoLEngine::addCharacter(int id) { -- cgit v1.2.3