Changed the handling of Win32 function SetErrorMode to be more correct. The flag...
authorsgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 19 Nov 2008 10:09:21 +0000 (10:09 +0000)
committersgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 19 Nov 2008 10:09:21 +0000 (10:09 +0000)
Review URL: http://codereview.chromium.org/11471

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@792 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

tools/test.py

index e193e272d881b3097f4a889d236599a590c2ea63..5cff304d33dac040ca53e461de242982085b1c02 100755 (executable)
@@ -417,8 +417,12 @@ def RunProcess(context, timeout, args, **rest):
   if utils.IsWindows():
     popen_args = '"' + subprocess.list2cmdline(args) + '"'
     if context.suppress_dialogs:
-      # Try to change the error mode to avoid dialogs on fatal errors.
-      Win32SetErrorMode(SEM_NOGPFAULTERRORBOX)
+      # Try to change the error mode to avoid dialogs on fatal errors. Don't
+      # touch any existing error mode flags by merging the existing error mode.
+      # See http://blogs.msdn.com/oldnewthing/archive/2004/07/27/198410.aspx.
+      error_mode = SEM_NOGPFAULTERRORBOX;
+      prev_error_mode = Win32SetErrorMode(error_mode);
+      Win32SetErrorMode(error_mode | prev_error_mode);
   process = subprocess.Popen(
     shell = utils.IsWindows(),
     args = popen_args,