Fix segfault when there are too many closing round brackets in parsed code

This commit is contained in:
William S Fulton 2014-04-04 08:53:11 +01:00
commit e442903fde
3 changed files with 9 additions and 1 deletions

View file

@ -0,0 +1,6 @@
%module cpp_extra_brackets
// Extra brackets was segfaulting in SWIG-3.0.0
struct ABC {
int operator<<(ABC &))) { return 0; }
};

View file

@ -0,0 +1 @@
cpp_extra_brackets.i:5: Error: Syntax error in input(3).

View file

@ -345,7 +345,8 @@ Scanner_push_brackets(Scanner *s) {
* ----------------------------------------------------------------------------- */
void
Scanner_pop_brackets(Scanner *s) {
Delitem(s->brackets, 0);
if (Len(s->brackets) > 0) /* protect against unbalanced ')' brackets */
Delitem(s->brackets, 0);
}
/* -----------------------------------------------------------------------------