diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2017-03-23 23:42:41 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2017-03-23 23:42:41 +0100 |
commit | 2491d5f30573d9e5e72b3c7d2eac8788bbe69dd4 (patch) | |
tree | c1ebb59953fc2f75075d92e2f650d71c11d20e4d /src | |
parent | d4eaa94908b8db15beeb543f2eb5945fbd0ed224 (diff) | |
download | sciteco-2491d5f30573d9e5e72b3c7d2eac8788bbe69dd4.tar.gz |
fixed checks for missing left and right operands to binary operators
* this resulted in assertions (crashes!) for harmless typos like "+23="
* a test case has been added
Diffstat (limited to 'src')
-rw-r--r-- | src/expressions.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/expressions.cpp b/src/expressions.cpp index 6c28080..7ccdd31 100644 --- a/src/expressions.cpp +++ b/src/expressions.cpp @@ -124,11 +124,11 @@ Expressions::calc(void) Operator op; tecoInt vleft; - if (operators.peek() != OP_NUMBER) + if (!operators.items() || operators.peek() != OP_NUMBER) throw Error("Missing right operand"); vright = pop_num(); op = pop_op(); - if (operators.peek() != OP_NUMBER) + if (!operators.items() || operators.peek() != OP_NUMBER) throw Error("Missing left operand"); vleft = pop_num(); |