summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorMax Maischein <corion@corion.net>2011-05-22 21:36:57 -0700
committerFather Chrysostomos <sprout@cpan.org>2011-05-22 21:50:50 -0700
commit0e21945565eb4664d843bb819fb032cedee4d5a6 (patch)
treeb5b5ab6ecccabc65812e44ac0a5baefa3f5e5000 /win32
parent369fb445f856204b1f9717b96bde7cd9bb9da369 (diff)
downloadperl-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 'win32')
-rw-r--r--win32/perlhost.h7
1 files changed, 0 insertions, 7 deletions
diff --git a/win32/perlhost.h b/win32/perlhost.h
index 0240044c11..abe7296e93 100644
--- a/win32/perlhost.h
+++ b/win32/perlhost.h
@@ -1722,18 +1722,11 @@ win32_start_child(LPVOID arg)
PERL_SET_THX(my_perl);
win32_checkTLS(my_perl);
- /* set $$ to pseudo id */
#ifdef PERL_SYNC_FORK
w32_pseudo_id = id;
#else
w32_pseudo_id = GetCurrentThreadId();
#endif
- if (tmpgv = gv_fetchpv("$", TRUE, SVt_PV)) {
- SV *sv = GvSV(tmpgv);
- SvREADONLY_off(sv);
- sv_setiv(sv, -(IV)w32_pseudo_id);
- SvREADONLY_on(sv);
- }
#ifdef PERL_USES_PL_PIDSTATUS
hv_clear(PL_pidstatus);
#endif