aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/expressions.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/expressions.h b/src/expressions.h
index 83d3b12..7785215 100644
--- a/src/expressions.h
+++ b/src/expressions.h
@@ -21,6 +21,7 @@
#include <glib.h>
#include "undo.h"
+#include "parser.h" // State::Error
template <typename Type>
class ValueStack {
@@ -71,7 +72,7 @@ public:
~ValueStack()
{
- delete stack;
+ delete[] stack;
}
inline int
@@ -83,6 +84,9 @@ public:
inline Type &
push(Type value, int index = 1)
{
+ if (items() == size)
+ throw State::Error("Stack overflow");
+
for (int i = -index + 1; i; i++)
top[i+1] = top[i];