Fix a bug in stack overflow error handling. This fixes half of Bug
#115555.
The error from s_push() on stack overflow was -1, which was passed
through unchanged by push(), but not tested for by push()'s caller --
which only expected positive error codes. Fixed by changing s_push()
to return E_NOMEM on stack overflow. (Not quite the proper error code
either, but I can't be bothered adding a new E_STACKOVERFLOW error
code in all the right places.)
diff --git a/Parser/parser.c b/Parser/parser.c
index d379f60..6eaa925 100644
--- a/Parser/parser.c
+++ b/Parser/parser.c
@@ -40,7 +40,7 @@
register stackentry *top;
if (s->s_top == s->s_base) {
fprintf(stderr, "s_push: parser stack overflow\n");
- return -1;
+ return E_NOMEM;
}
top = --s->s_top;
top->s_dfa = d;