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.

Reply via email to