From 727f1b8cbc740f0c9f33f5e6c98bb99ae44a21ff Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sun, 10 Jul 2022 16:35:49 -0400 Subject: [PATCH] Fixed parsing of floats with ' separators --- IDEHelper/Compiler/BfParser.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/IDEHelper/Compiler/BfParser.cpp b/IDEHelper/Compiler/BfParser.cpp index 7eecb9e5..659aa9de 100644 --- a/IDEHelper/Compiler/BfParser.cpp +++ b/IDEHelper/Compiler/BfParser.cpp @@ -1398,12 +1398,19 @@ double BfParser::ParseLiteralDouble() char buf[256]; int len = std::min(mTokenEnd - mTokenStart, 255); - memcpy(buf, &mSrc[mTokenStart], len); - char c = buf[len - 1]; + int outLen = 0; + for (int i = 0; i < len; i++) + { + char c = mSrc[mTokenStart + i]; + if (c != '\'') + buf[outLen++] = c; + } + + char c = buf[outLen - 1]; if ((c == 'd') || (c == 'D') || (c == 'f') || (c == 'F')) - buf[len - 1] = '\0'; + buf[outLen - 1] = '\0'; else - buf[len] = '\0'; + buf[outLen] = '\0'; return strtod(buf, NULL); }