From 225593e1515f97126032fb4da0b1aafeb00e8e99 Mon Sep 17 00:00:00 2001 From: Dave Mitchell Date: Mon, 18 Jun 2007 00:00:30 +0000 Subject: [PATCH] add test for, and update comments for, old defined($1) oddity. Some code in regexec.c had a comment to the effect that without this code, Dynaloader failed (this is back at 5.6.0). Replace the comments with something more specific, and add a test for it (basically without the code $1 is '' rather than undefined sometimes). p4raw-id: //depot/perl@31408 --- regexec.c | 14 ++++++-------- t/op/re_tests | 1 + 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/regexec.c b/regexec.c index a5f6bb5..b05a177 100644 --- a/regexec.c +++ b/regexec.c @@ -285,9 +285,8 @@ S_regcppop(pTHX_ const regexp *rex) * requiring null fields (pat.t#187 and split.t#{13,14} * (as of patchlevel 7877) will fail. Then again, * this code seems to be necessary or otherwise - * building DynaLoader will fail: - * "Error: '*' not in typemap in DynaLoader.xs, line 164" - * --jhi */ + * this erroneously leaves $1 defined: "1" =~ /^(?:(\d)x)?\d$/ + * --jhi updated by dapm */ for (i = *PL_reglastparen + 1; i <= rex->nparens; i++) { if (i > PL_regsize) PL_regoffs[i].start = -1; @@ -2267,13 +2266,12 @@ S_regtry(pTHX_ regmatch_info *reginfo, char **startpos) /* Tests pat.t#187 and split.t#{13,14} seem to depend on this code. * Actually, the code in regcppop() (which Ilya may be meaning by * PL_reglastparen), is not needed at all by the test suite - * (op/regexp, op/pat, op/split), but that code is needed, oddly - * enough, for building DynaLoader, or otherwise this - * "Error: '*' not in typemap in DynaLoader.xs, line 164" - * will happen. Meanwhile, this code *is* needed for the + * (op/regexp, op/pat, op/split), but that code is needed otherwise + * this erroneously leaves $1 defined: "1" =~ /^(?:(\d)x)?\d$/ + * Meanwhile, this code *is* needed for the * above-mentioned test suite tests to succeed. The common theme * on those tests seems to be returning null fields from matches. - * --jhi */ + * --jhi updated by dapm */ #if 1 if (prog->nparens) { regexp_paren_pair *pp = PL_regoffs; diff --git a/t/op/re_tests b/t/op/re_tests index 3afdc71..13f0693 100644 --- a/t/op/re_tests +++ b/t/op/re_tests @@ -1326,3 +1326,4 @@ foo(\h)bar foo\tbar y $1 \t (\h)(\H) foo\tbar y $1-$2 \t-b .*\z foo\n y - - +^(?:(\d)x)?\d$ 1 y ${\(defined($1)?1:0)} 0 -- 2.7.4