5.6.0 Patch for EPOC
[p5sagit/p5-mst-13.2.git] / util.c
diff --git a/util.c b/util.c
index dd8c842..e0f1f14 100644 (file)
--- a/util.c
+++ b/util.c
@@ -2402,7 +2402,9 @@ Perl_my_popen(pTHX_ char *cmd, char *mode)
        PerlLIO_close(p[This]);
        p[This] = p[that];
     }
+    MUTEX_LOCK(&PL_fdpid_mutex);
     sv = *av_fetch(PL_fdpid,p[This],TRUE);
+    MUTEX_UNLOCK(&PL_fdpid_mutex);
     (void)SvUPGRADE(sv,SVt_IV);
     SvIVX(sv) = pid;
     PL_forkprocess = pid;
@@ -2620,7 +2622,9 @@ Perl_my_pclose(pTHX_ PerlIO *ptr)
     int saved_win32_errno;
 #endif
 
+    MUTEX_LOCK(&PL_fdpid_mutex);
     svp = av_fetch(PL_fdpid,PerlIO_fileno(ptr),TRUE);
+    MUTEX_UNLOCK(&PL_fdpid_mutex);
     pid = SvIVX(*svp);
     SvREFCNT_dec(*svp);
     *svp = &PL_sv_undef;
@@ -3495,7 +3499,6 @@ Perl_condpair_magic(pTHX_ SV *sv)
 SV *
 Perl_lock(pTHX_ SV *osv)
 {
-#ifdef USE_THREADS
     MAGIC *mg;
     SV *sv = osv;
 
@@ -3514,12 +3517,11 @@ Perl_lock(pTHX_ SV *osv)
        while (MgOWNER(mg))
            COND_WAIT(MgOWNERCONDP(mg), MgMUTEXP(mg));
        MgOWNER(mg) = thr;
-       DEBUG_S(PerlIO_printf(Perl_debug_log, "0x%"UVxf": pp_lock lock 0x%"UVxf"\n",
+       DEBUG_S(PerlIO_printf(Perl_debug_log, "0x%"UVxf": Perl_lock lock 0x%"UVxf"\n",
                              PTR2UV(thr), PTR2UV(sv));)
        MUTEX_UNLOCK(MgMUTEXP(mg));
        SAVEDESTRUCTOR_X(Perl_unlock_condpair, sv);
     }
-#endif
   SvUNLOCK(sv);
   return sv;
 }