summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/util.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/util.cc b/src/util.cc
index e8354b8..63bd2cd 100644
--- a/src/util.cc
+++ b/src/util.cc
@@ -46,7 +46,15 @@ void Fatal(const char* msg, ...) {
vfprintf(stderr, msg, ap);
va_end(ap);
fprintf(stderr, "\n");
+#ifdef WIN32
+ // On Windows, some tools may inject extra threads.
+ // exit() may block on locks held by those threads, so forcibly exit.
+ fflush(stderr);
+ fflush(stdout);
+ ExitProcess(1);
+#else
exit(1);
+#endif
}
void Warning(const char* msg, ...) {