Make it less fatal to not call ioManagerStart()
authorSimon Marlow <marlowsd@gmail.com>
Thu, 29 May 2008 11:09:57 +0000 (11:09 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Thu, 29 May 2008 11:09:57 +0000 (11:09 +0000)
For clients that forget to do hs_add_root()

rts/win32/ThrIOManager.c

index 76747c2..a74aac1 100644 (file)
@@ -67,8 +67,8 @@ readIOManagerEvent (void)
 #if defined(THREADED_RTS)\r
     HsWord32 res;\r
 \r
 #if defined(THREADED_RTS)\r
     HsWord32 res;\r
 \r
-    ACQUIRE_LOCK(&event_buf_mutex);\r
     if (io_manager_event != INVALID_HANDLE_VALUE) {\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
         if (next_event == 0) {\r
             res = 0; // no event to return\r
         } else {\r
@@ -80,10 +80,10 @@ readIOManagerEvent (void)
                 }\r
             }\r
         }\r
                 }\r
             }\r
         }\r
+        RELEASE_LOCK(&event_buf_mutex);\r
     } else {\r
         res = 0;\r
     }\r
     } else {\r
         res = 0;\r
     }\r
-    RELEASE_LOCK(&event_buf_mutex);\r
     // debugBelch("readIOManagerEvent: %d\n", res);\r
     return res;\r
 #else\r
     // debugBelch("readIOManagerEvent: %d\n", res);\r
     return res;\r
 #else\r
@@ -96,8 +96,8 @@ sendIOManagerEvent (HsWord32 event)
 {\r
 #if defined(THREADED_RTS)\r
     // debugBelch("sendIOManagerEvent: %d\n", 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
     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
         if (next_event == EVENT_BUFSIZ) {\r
             errorBelch("event buffer overflowed; event dropped");\r
         } else {\r
@@ -107,8 +107,8 @@ sendIOManagerEvent (HsWord32 event)
             }        \r
             event_buf[next_event++] = (StgWord32)event;\r
         }\r
             }        \r
             event_buf[next_event++] = (StgWord32)event;\r
         }\r
+        RELEASE_LOCK(&event_buf_mutex);\r
     }\r
     }\r
-    RELEASE_LOCK(&event_buf_mutex);\r
 #endif\r
 }    \r
 \r
 #endif\r
 }    \r
 \r