Don’t leak pattern buffer when invalid flags croak
authorFather Chrysostomos <sprout@cpan.org>
Sun, 4 Nov 2012 07:03:43 +0000 (00:03 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Mon, 5 Nov 2012 06:45:33 +0000 (22:45 -0800)
commit10002bc1e43a1dd716ef062f4d0f900ed881a652
tree3b3c5ef910ce05d99cb5d1010ff7efc633ba1e1d
parent47c8e7fe4dafea45e2640fb1b39714077bda8085
Don’t leak pattern buffer when invalid flags croak

Normally if there is a syntax error yyerror just records it and pars-
ing continues anyway.  If there are too many syntax errors, it croaks.

It just happened that if it croaked when encountering invalid flags
for quote-like operators it would leak the buffer containing the pat-
tern (and the substitution for s///).

Since those are stored in the parser struct and are set to null when-
ever something else takes ownership of the SV, these struct members
will only ever be non-null in parser_free when they have leaked.  So
we can free them there.  (I.e., these slots have always been refer-
ence-counted, so treat them that way.)
t/op/svleak.t
toke.c