gcancellable: add back lost NULL check in g_cancellable_cancel()

Commit f975858e86 removed the NULL check in g_cancellable_cancel() by
accident which makes it crash when called with NULL.

Add the check back and add a test so this doesn't happen again.

Fixes #1710
This commit is contained in:
Christoph Reiter 2019-03-05 16:44:16 +01:00
parent aeb7dbad30
commit e13c646465
2 changed files with 8 additions and 1 deletions

View File

@ -484,7 +484,7 @@ g_cancellable_cancel (GCancellable *cancellable)
{ {
GCancellablePrivate *priv; GCancellablePrivate *priv;
if (g_cancellable_is_cancelled (cancellable)) if (cancellable == NULL || g_cancellable_is_cancelled (cancellable))
return; return;
priv = cancellable->priv; priv = cancellable->priv;

View File

@ -216,12 +216,19 @@ test_cancel_multiple_concurrent (void)
g_main_loop_unref (loop); g_main_loop_unref (loop);
} }
static void
test_cancel_null (void)
{
g_cancellable_cancel (NULL);
}
int int
main (int argc, char *argv[]) main (int argc, char *argv[])
{ {
g_test_init (&argc, &argv, NULL); g_test_init (&argc, &argv, NULL);
g_test_add_func ("/cancellable/multiple-concurrent", test_cancel_multiple_concurrent); g_test_add_func ("/cancellable/multiple-concurrent", test_cancel_multiple_concurrent);
g_test_add_func ("/cancellable/null", test_cancel_null);
return g_test_run (); return g_test_run ();
} }