Index: engine/SCons/Platform/win32.py |
=================================================================== |
--- engine/SCons/Platform/win32.py (revision 4802) |
+++ engine/SCons/Platform/win32.py (working copy) |
@@ -41,6 +41,33 @@ |
from SCons.Platform import TempFileMunge |
import SCons.Util |
+#NACL_CHANGE(bradnelson) - FROM THIS: |
+#NACL_CHANGE(bradnelson) - TO THIS: |
+import threading |
+ |
+# Monkey patch os.spawnve on Windows to become thread safe |
+from os import spawnve as old_spawnve |
+ |
+spawn_lock = threading.Lock() |
+ |
+def new_spawnve(mode, file, args, env): |
+ spawn_lock.acquire() |
+ try: |
+ if mode == os.P_WAIT: |
+ ret = old_spawnve(os.P_NOWAIT, file, args, env) |
+ else: |
+ ret = old_spawnve(mode, file, args, env) |
+ finally: |
+ spawn_lock.release() |
+ if mode == os.P_WAIT: |
+ pid, status = os.waitpid(ret, 0) |
+ ret = status >> 8 |
+ return ret |
+ |
+os.spawnve = new_spawnve |
+ |
+#NACL_CHANGE(bradnelson) - END CHANGES. |
+ |
try: |
import msvcrt |
import win32api |