summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--regcomp.c1
-rw-r--r--regexec.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/regcomp.c b/regcomp.c
index fbda2098c9..e264715fa7 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -4657,6 +4657,7 @@ Perl_save_re_context(pTHX)
SAVEVPTR(PL_reg_oldcurpm); /* from regexec.c */
SAVEVPTR(PL_reg_curpm); /* from regexec.c */
SAVEI32(PL_regnpar); /* () count. */
+ SAVEI32(PL_regsize); /* from regexec.c */
#ifdef DEBUGGING
SAVEPPTR(PL_reg_starttry); /* from regexec.c */
#endif
diff --git a/regexec.c b/regexec.c
index 9ba61d74be..7c168cf538 100644
--- a/regexec.c
+++ b/regexec.c
@@ -144,6 +144,9 @@ S_regcppush(pTHX_ I32 parenfloor)
int paren_elems_to_push = (PL_regsize - parenfloor) * REGCP_PAREN_ELEMS;
int p;
+ if (paren_elems_to_push < 0)
+ Perl_croak(aTHX_ "panic: paren_elems_to_push < 0");
+
#define REGCP_OTHER_ELEMS 5
SSCHECK(paren_elems_to_push + REGCP_OTHER_ELEMS);
for (p = PL_regsize; p > parenfloor; p--) {