From 9e0ea1cb4a2155eb07fbd731d9fab5ce27554fed Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sat, 27 Sep 2014 17:08:26 -0400 Subject: [PATCH] Eval - Better error message for malformed expressions, ie when a binary operator expects two values, and sees less then two or when a unary operator sees less than one. --- src/Eval.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Eval.cpp b/src/Eval.cpp index 985fe1199..a98972985 100644 --- a/src/Eval.cpp +++ b/src/Eval.cpp @@ -243,6 +243,9 @@ void Eval::evaluatePostfixStack ( if (token->second == Lexer::typeOperator && token->first == "!") { + if (values.size () < 1) + throw std::string (STRING_EVAL_NO_EVAL); + Variant right = values.back (); values.pop_back (); if (_debug) @@ -256,6 +259,9 @@ void Eval::evaluatePostfixStack ( else if (token->second == Lexer::typeOperator && token->first == "_neg_") { + if (values.size () < 1) + throw std::string (STRING_EVAL_NO_EVAL); + Variant right = values.back (); values.pop_back (); if (_debug) @@ -279,6 +285,9 @@ void Eval::evaluatePostfixStack ( // Binary operators. else if (token->second == Lexer::typeOperator) { + if (values.size () < 2) + throw std::string (STRING_EVAL_NO_EVAL); + Variant right = values.back (); values.pop_back ();