sv.c: String copy comments
authorFather Chrysostomos <sprout@cpan.org>
Wed, 20 Nov 2013 14:19:05 +0000 (06:19 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 30 Nov 2013 13:53:16 +0000 (05:53 -0800)
This layout, which goes back to 765f542df2 in 2002, I find a bit con-
fusing.  The comments help.  (Though rewriting it might be better.)
 Granted, back in 2002 there wasn’t nearly as much code in any of
the branches.

sv.c

diff --git a/sv.c b/sv.c
index 4c3fdbb..ccb25e6 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -4323,6 +4323,17 @@ Perl_sv_setsv_flags(pTHX_ SV *dstr, SV* sstr, const I32 flags)
           and doing it now facilitates the COW check.  */
        (void)SvPOK_only(dstr);
 
+       /* This long and winding if statement is laid out like this:
+           if ( source cannot COW
+             && it is not swipable either (recording whether it is)
+             && we cannot COW here (full check)
+            ) {
+               just copy the string
+           }
+           else {
+               swipe or cow
+           }
+       */
        if (
            /* If we're already COW then this clause is not true, and if COW
               is allowed then we drop down to the else and make dest COW