combine regex concat overload loops
authorDavid Mitchell <davem@iabyn.com>
Tue, 16 Apr 2013 10:34:54 +0000 (11:34 +0100)
committerDavid Mitchell <davem@iabyn.com>
Sat, 20 Apr 2013 16:23:12 +0000 (17:23 +0100)
commit467cc54e2ada8b8c74001c2e8e45d0a14b09338b
treea83d550637a29ab547ed8a4d3c0cf748ae948006
parentdc88a410e99b29188c22085a46935029f8b932f4
combine regex concat overload loops

Currently when the components of a runtime regex (e.g. the "a", $x, "-"
in /a$x-/) are concatenated into a single pattern string, the handling of
magic and various types of overloading is done within two separate loops:
(in perlish pseudocode):

    foreach (@arg) {
        SvGETMAGIC($_);
        apply 'qr' overloading to $_;
    }
    foreach (@arg) {
        $pat .= $_, allowing for '.' and '""' overloading;
    }

This commit changes it to:

    foreach (@arg) {
        SvGETMAGIC($_);
        apply 'qr' overloading to $_;
        $pat .= $_, allowing for '.' and '""' overloading;
    }

Note that this is in theory a user-visible change in behaviour, since
the order in which various perl-level tie and overload functions get
called may change. But that was just a quirk of the current
implementation, rather than a documented feature.
regcomp.c