From f88faf25fb61bba5ec6db021669619a1aa28fb5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Fri, 22 Jan 2010 21:02:04 +0000 Subject: [PATCH] Fix parsing scientific notation in the form of 1E+6 or 1E-6. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35244 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/shared/ExpressionParser.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/kits/shared/ExpressionParser.cpp b/src/kits/shared/ExpressionParser.cpp index 5706d1b7ec..06a5f571fc 100644 --- a/src/kits/shared/ExpressionParser.cpp +++ b/src/kits/shared/ExpressionParser.cpp @@ -137,11 +137,22 @@ class Tokenizer { BString temp; const char* begin = fCurrentChar; + bool expectE = true; + bool expectPlusOfMinus = false; while (*fCurrentChar != 0) { if (!isdigit(*fCurrentChar)) { - if (!(*fCurrentChar == '.' || *fCurrentChar == ',' - || *fCurrentChar == 'e' || *fCurrentChar == 'E')) + if (*fCurrentChar == 'e' || *fCurrentChar == 'E') { + if (!expectE) + break; + expectE = false; + expectPlusOfMinus = true; + } else if (*fCurrentChar == '+' || *fCurrentChar == '-') { + if (!expectPlusOfMinus) + break; + } else if (!(*fCurrentChar == '.' || *fCurrentChar == ',')) break; + else + expectPlusOfMinus = false; } if (*fCurrentChar == ',') temp << '.';