diff --git a/regcomp.c b/regcomp.c index 06f01e9ab83d..e51dd52948a7 100644 --- a/regcomp.c +++ b/regcomp.c @@ -19350,15 +19350,11 @@ S_optimize_regclass(pTHX_ * any run-time dependencies don't matter */ if (start[0] == 0 && end[0] == UV_MAX) { if (*invert) { - op = OPFAIL; - *ret = reganode(pRExC_state, op, 0); + goto return_OPFAIL; } else { - op = SANY; - *ret = reg_node(pRExC_state, op); - MARK_NAUGHTY(1); + goto return_SANY; } - return op; } /* Similarly, for /l posix classes, if both a class and its complement @@ -19370,13 +19366,10 @@ S_optimize_regclass(pTHX_ && POSIXL_TEST(posixl, namedclass + 1)) /* its complement */ { if (*invert) { - op = OPFAIL; - *ret = reganode(pRExC_state, op, 0); + goto return_OPFAIL; } else { - op = SANY; - *ret = reg_node(pRExC_state, op); - MARK_NAUGHTY(1); + goto return_SANY; } return op; } @@ -19460,15 +19453,11 @@ S_optimize_regclass(pTHX_ * properties). */ if (partial_cp_count == 0) { if (*invert) { - op = SANY; - *ret = reg_node(pRExC_state, op); + goto return_SANY; } else { - op = OPFAIL; - *ret = reganode(pRExC_state, op, 0); + goto return_OPFAIL; } - - return op; } /* If matches everything but \n */ @@ -20184,6 +20173,17 @@ S_optimize_regclass(pTHX_ } return op; + + return_OPFAIL: + op = OPFAIL; + *ret = reganode(pRExC_state, op, 0); + return op; + + return_SANY: + op = SANY; + *ret = reg_node(pRExC_state, op); + MARK_NAUGHTY(1); + return op; } #undef HAS_NONLOCALE_RUNTIME_PROPERTY_DEFINITION