diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2014-02-15 17:41:53 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2014-02-15 18:38:25 +0100 |
commit | e5563f887206cd6b39beeaa53c545d7dbae67476 (patch) | |
tree | 7e1102990ae3c85e5c9424518691876c61302ccb /src/expressions.h | |
parent | a30c90206d7011905955063ae432a5be30dca6f4 (diff) | |
download | sciteco-e5563f887206cd6b39beeaa53c545d7dbae67476.tar.gz |
report stack overflows as errors & fixed ValueStack dtor
* ValueStack destruction might have resulted in Segfaults at shutdown
Diffstat (limited to 'src/expressions.h')
-rw-r--r-- | src/expressions.h | 6 |
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]; |