Change 31408 by [EMAIL PROTECTED] on 2007/06/18 00:00:30
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).
Affected files ...
... //depot/perl/regexec.c#541 edit
... //depot/perl/t/op/re_tests#122 edit
Differences ...
==== //depot/perl/regexec.c#541 (text) ====
Index: perl/regexec.c
--- perl/regexec.c#540~31335~ 2007-06-05 05:51:07.000000000 -0700
+++ perl/regexec.c 2007-06-17 17:00:30.000000000 -0700
@@ -285,9 +285,8 @@
* 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 @@
/* 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;
==== //depot/perl/t/op/re_tests#122 (text) ====
Index: perl/t/op/re_tests
--- perl/t/op/re_tests#121~31303~ 2007-05-29 01:49:06.000000000 -0700
+++ perl/t/op/re_tests 2007-06-17 17:00:30.000000000 -0700
@@ -1326,3 +1326,4 @@
(\h)(\H) foo\tbar y $1-$2 \t-b
.*\z foo\n y - -
+^(?:(\d)x)?\d$ 1 y ${\(defined($1)?1:0)} 0
End of Patch.