diff options
author | Max Maischein <corion@corion.net> | 2011-05-22 21:36:57 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-05-22 21:50:50 -0700 |
commit | 0e21945565eb4664d843bb819fb032cedee4d5a6 (patch) | |
tree | b5b5ab6ecccabc65812e44ac0a5baefa3f5e5000 /pp_sys.c | |
parent | 369fb445f856204b1f9717b96bde7cd9bb9da369 (diff) | |
download | perl-0e21945565eb4664d843bb819fb032cedee4d5a6.tar.gz |
Turn $$ into a magical readonly variable that always fetches getpid() instead of caching it
The intent is that by not caching $$, we eliminate one opportunity for bugs:
If one embeds Perl or uses XS and calls fork(3) from C, Perls notion of $$
may go out of sync with what getpid() returns. By always fetching the
value of $$ via getpid(), this bug opportunity is eliminated. The overhead
of always fetching $$ should be small and is likely only used for tempfile
creation, which should be dwarfed by file system accesses.
Diffstat (limited to 'pp_sys.c')
-rw-r--r-- | pp_sys.c | 6 |
1 files changed, 0 insertions, 6 deletions
@@ -4017,12 +4017,6 @@ PP(pp_fork) if (childpid < 0) RETSETUNDEF; if (!childpid) { - GV * const tmpgv = gv_fetchpvs("$", GV_ADD|GV_NOTQUAL, SVt_PV); - if (tmpgv) { - SvREADONLY_off(GvSV(tmpgv)); - sv_setiv(GvSV(tmpgv), (IV)PerlProc_getpid()); - SvREADONLY_on(GvSV(tmpgv)); - } #ifdef THREADS_HAVE_PIDS PL_ppid = (IV)getppid(); #endif |