ShutdownIOManager: don't free the IOManagerState, because the worker
threads haven't necessarily died yet and might reference it again.
Apparently fixes a strange bug: I have a Haskell program which on
Windows causes the shell to exit after I run it. I don't know what
the real cause of this is, but this is a clear bug and fixing it stops
the shell from exiting.
MERGE TO STABLE
return depositWorkItem(reqID, wItem);
}
-void ShutdownIOManager()
+void ShutdownIOManager ( void )
{
SetEvent(ioMan->hExitEvent);
- free(ioMan);
- ioMan = NULL;
+ // ToDo: we can't free this now, because the worker thread(s)
+ // haven't necessarily finished with it yet. Perhaps it should
+ // have a reference count or something.
+ // free(ioMan);
+ // ioMan = NULL;
}