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.)
This commit is contained in:
parent
f6791f3d12
commit
e3c3b27d33
|
@ -40,7 +40,7 @@ s_push(register stack *s, dfa *d, node *parent)
|
||||||
register stackentry *top;
|
register stackentry *top;
|
||||||
if (s->s_top == s->s_base) {
|
if (s->s_top == s->s_base) {
|
||||||
fprintf(stderr, "s_push: parser stack overflow\n");
|
fprintf(stderr, "s_push: parser stack overflow\n");
|
||||||
return -1;
|
return E_NOMEM;
|
||||||
}
|
}
|
||||||
top = --s->s_top;
|
top = --s->s_top;
|
||||||
top->s_dfa = d;
|
top->s_dfa = d;
|
||||||
|
|
Loading…
Reference in New Issue