Move the code to add magic to $0 into Perl_gv_fetchpvn_flags().
authorNicholas Clark <nick@ccl4.org>
Sat, 23 May 2009 10:08:47 +0000 (11:08 +0100)
committerNicholas Clark <nick@ccl4.org>
Sat, 23 May 2009 10:15:46 +0000 (11:15 +0100)
commite69c155ade49d196491f1d9c96c161b71bb34010
tree8bfcf9848e6033d3c13c93e2c89dd693639181b0
parentae8ade652800905bd8590e000023dd965b1b766b
Move the code to add magic to $0 into Perl_gv_fetchpvn_flags().

Curiously, this appears to always have been implemented slightly inefficiently.
It dates from perl 4.000, which added the functionality to make assigning to $0
set the process name. The equivalent fix for 4.000 is:

--- a/perl.c
+++ b/perl.c
@@ -738,7 +738,7 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
  (void)hadd(sigstab);
     }

-    magicalize("!#?^~=-%.+&*()<>,\\/[|`':\004\t\020\024\027\006");
+    magicalize("!#?^~=-%.+&*()<>,\\/[|`':0\004\t\020\024\027\006");
     userinit(); /* in case linked C routines want magical variables */

     amperstab = stabent("&",allstabs);
@@ -828,7 +828,6 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
 #endif
     if (tmpstab = stabent("0",allstabs)) {
  str_set(stab_val(tmpstab),origfilename);
- magicname("0", Nullch, 0);
     }
     if (tmpstab = stabent("\030",allstabs))
  str_set(stab_val(tmpstab),origargv[0]);
gv.c
perl.c