From bfa1254eb7c749f16716ef41ff1ccffd4b6d9556 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Mon, 16 Sep 2024 16:36:06 +0200 Subject: [PATCH] Fix octal string escaped --- oscar64/Scanner.cpp | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/oscar64/Scanner.cpp b/oscar64/Scanner.cpp index ae60eb4..e94ea57 100644 --- a/oscar64/Scanner.cpp +++ b/oscar64/Scanner.cpp @@ -2052,8 +2052,25 @@ void Scanner::StringToken(char terminator, char mode) switch (ch) { case '0': - mTokenChar = '\0'; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + { + mTokenChar = ch - '0'; + if (mLine[mOffset] >= '0' && mLine[mOffset] <= '7') + { + mTokenChar = mTokenChar * 8 + mLine[mOffset ++ ] - '0'; + if (mLine[mOffset] >= '0' && mLine[mOffset] <= '7') + { + mTokenChar = mTokenChar * 8 + mLine[mOffset++] - '0'; + } + } break; + } case 'n': mTokenChar = '\n'; break; @@ -2146,8 +2163,25 @@ void Scanner::CharToken(char mode) switch (ch) { case '0': - mTokenChar = '\0'; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + { + mTokenChar = ch - '0'; + if (mLine[mOffset] >= '0' && mLine[mOffset] <= '7') + { + mTokenChar = mTokenChar * 8 + mLine[mOffset++] - '0'; + if (mLine[mOffset] >= '0' && mLine[mOffset] <= '7') + { + mTokenChar = mTokenChar * 8 + mLine[mOffset++] - '0'; + } + } break; + } case 'n': mTokenChar = '\n'; break;