Make it less fatal to not call ioManagerStart()
[ghc-hetmet.git] / rts / win32 / ThrIOManager.c
index b0da0de..a74aac1 100644 (file)
@@ -59,20 +59,20 @@ nat next_event;
 \r
 #endif\r
 \r
-StgWord32\r
+HsWord32\r
 readIOManagerEvent (void)\r
 {\r
     // This function must exist even in non-THREADED_RTS, \r
     // see getIOManagerEvent() above.\r
 #if defined(THREADED_RTS)\r
-    StgWord32 res;\r
+    HsWord32 res;\r
 \r
-    ACQUIRE_LOCK(&event_buf_mutex);\r
     if (io_manager_event != INVALID_HANDLE_VALUE) {\r
+        ACQUIRE_LOCK(&event_buf_mutex);\r
         if (next_event == 0) {\r
             res = 0; // no event to return\r
         } else {\r
-            res = event_buf[--next_event];\r
+            res = (HsWord32)(event_buf[--next_event]);\r
             if (next_event == 0) {\r
                 if (!ResetEvent(io_manager_event)) {\r
                     sysErrorBelch("readIOManagerEvent");\r
@@ -80,10 +80,10 @@ readIOManagerEvent (void)
                 }\r
             }\r
         }\r
+        RELEASE_LOCK(&event_buf_mutex);\r
     } else {\r
         res = 0;\r
     }\r
-    RELEASE_LOCK(&event_buf_mutex);\r
     // debugBelch("readIOManagerEvent: %d\n", res);\r
     return res;\r
 #else\r
@@ -92,12 +92,12 @@ readIOManagerEvent (void)
 }\r
 \r
 void\r
-sendIOManagerEvent (StgWord32 event)\r
+sendIOManagerEvent (HsWord32 event)\r
 {\r
 #if defined(THREADED_RTS)\r
     // debugBelch("sendIOManagerEvent: %d\n", event);\r
-    ACQUIRE_LOCK(&event_buf_mutex);\r
     if (io_manager_event != INVALID_HANDLE_VALUE) {\r
+        ACQUIRE_LOCK(&event_buf_mutex);\r
         if (next_event == EVENT_BUFSIZ) {\r
             errorBelch("event buffer overflowed; event dropped");\r
         } else {\r
@@ -105,10 +105,10 @@ sendIOManagerEvent (StgWord32 event)
                 sysErrorBelch("sendIOManagerEvent");\r
                 stg_exit(EXIT_FAILURE);\r
             }        \r
-            event_buf[next_event++] = event;\r
+            event_buf[next_event++] = (StgWord32)event;\r
         }\r
+        RELEASE_LOCK(&event_buf_mutex);\r
     }\r
-    RELEASE_LOCK(&event_buf_mutex);\r
 #endif\r
 }    \r
 \r