Merge pull request #3545 from ntherning/throw-AbandonedMutexException-on-unix
[mono.git] / mono / metadata / w32event-unix.c
index 237ea0f7507a20362e889ab23bf84b1c60476aff..5644ce7d27b1eb708aa47933e1acca5b0be7b44d 100644 (file)
@@ -24,11 +24,13 @@ struct MonoW32HandleNamedEvent {
        MonoW32HandleNamespace sharedns;
 };
 
-static gboolean event_handle_own (gpointer handle, MonoW32HandleType type)
+static gboolean event_handle_own (gpointer handle, MonoW32HandleType type, guint32 *statuscode)
 {
        MonoW32HandleEvent *event_handle;
        gboolean ok;
 
+       *statuscode = WAIT_OBJECT_0;
+
        ok = mono_w32handle_lookup (handle, type, (gpointer *)&event_handle);
        if (!ok) {
                g_warning ("%s: error looking up %s handle %p",
@@ -55,9 +57,9 @@ static void event_signal(gpointer handle)
        ves_icall_System_Threading_Events_SetEvent_internal (handle);
 }
 
-static gboolean event_own (gpointer handle)
+static gboolean event_own (gpointer handle, guint32 *statuscode)
 {
-       return event_handle_own (handle, MONO_W32HANDLE_EVENT);
+       return event_handle_own (handle, MONO_W32HANDLE_EVENT, statuscode);
 }
 
 static void namedevent_signal (gpointer handle)
@@ -66,9 +68,9 @@ static void namedevent_signal (gpointer handle)
 }
 
 /* NB, always called with the shared handle lock held */
-static gboolean namedevent_own (gpointer handle)
+static gboolean namedevent_own (gpointer handle, guint32 *statuscode)
 {
-       return event_handle_own (handle, MONO_W32HANDLE_NAMEDEVENT);
+       return event_handle_own (handle, MONO_W32HANDLE_NAMEDEVENT, statuscode);
 }
 
 static void event_details (gpointer data)