aboutsummaryrefslogtreecommitdiffhomepage
path: root/expressions.cpp
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-07 08:10:47 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-07 08:10:47 +0100
commit8a7d756c01d63761226725288caba0a1563389b0 (patch)
tree8c62cf1fab4e1c6ee7f9080769838b6e798756c9 /expressions.cpp
parent2ed38e4d01d73d62b29a28d7540ca515f9ff3b09 (diff)
downloadsciteco-8a7d756c01d63761226725288caba0a1563389b0.tar.gz
expression stack fixes and some arithmetic commands
Diffstat (limited to 'expressions.cpp')
-rw-r--r--expressions.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/expressions.cpp b/expressions.cpp
index 1e48d3e..8c8fb0c 100644
--- a/expressions.cpp
+++ b/expressions.cpp
@@ -23,7 +23,7 @@ Expressions::set_radix(gint r)
gint64
Expressions::push(gint64 number)
{
- while (numbers.peek() == G_MAXINT64)
+ while (numbers.items() > 0 && numbers.peek() == G_MAXINT64)
pop_num();
push(OP_NUMBER);
@@ -87,8 +87,10 @@ Expressions::push(Expressions::Operator op)
Expressions::Operator
Expressions::push_calc(Expressions::Operator op)
{
+ int first = first_op();
+
/* calculate if op has lower precedence than op on stack */
- if (operators.peek(first_op()) <= op)
+ if (first && operators.peek(first) <= op)
calc();
return push(op);