Avoid critical error in thread check if source is destroyed
authorAlexander Larsson <alexl@redhat.com>
Tue, 29 Sep 2009 09:25:13 +0000 (11:25 +0200)
committerAlexander Larsson <alexl@redhat.com>
Tue, 29 Sep 2009 09:27:15 +0000 (11:27 +0200)
The source can be destroyed by the time we complete the result, and
then the g_source_get_context(current_source) call will cause
a critical error. We check for the source being destroyed and avoid
the check in that case.

This means we miss the right-thread check in this case, but thats
merely a helper, so this is not critical.

gio/gsimpleasyncresult.c

index e177937..3fa43f0 100644 (file)
@@ -574,7 +574,7 @@ g_simple_async_result_complete (GSimpleAsyncResult *simple)
 
 #ifndef G_DISABLE_CHECKS
   current_source = g_main_current_source ();
-  if (current_source)
+  if (current_source && !g_source_is_destroyed (current_source))
     {
       current_context = g_source_get_context (current_source);
       if (current_context == g_main_context_default ())