Check that close_fn is not %NULL before calling (#578499)

Some streams have no close function, so this caused a crash.
This commit is contained in:
Alexander Larsson
2009-05-20 13:37:55 +02:00
parent 0a280dadec
commit c20b8d4d53
3 changed files with 26 additions and 16 deletions

View File

@@ -1165,13 +1165,16 @@ close_async_thread (GSimpleAsyncResult *res,
cancellation, since we want to close things anyway, although
possibly in a quick-n-dirty way. At least we never want to leak
open handles */
class = G_INPUT_STREAM_GET_CLASS (object);
result = class->close_fn (G_INPUT_STREAM (object), cancellable, &error);
if (!result)
if (class->close_fn)
{
g_simple_async_result_set_from_error (res, error);
g_error_free (error);
result = class->close_fn (G_INPUT_STREAM (object), cancellable, &error);
if (!result)
{
g_simple_async_result_set_from_error (res, error);
g_error_free (error);
}
}
}