tests: Use pointers in calls to g_atomic_pointer_compare_and_exchange()

Don’t pass integers; it’s not type-safe. The macro version of
`g_atomic_pointer_compare_and_exchange()` used to erroneously accept
integers, but they would have the wrong width on some platforms.

Changes originally investigated and suggested by Ting-Wei Lan.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Fixes: #1940
This commit is contained in:
Philip Withnall 2019-11-20 12:07:45 +00:00
parent eadc17f894
commit 844332ef31

View File

@ -83,14 +83,14 @@ test_types (void)
res = g_atomic_pointer_compare_and_exchange (&vp, &s, &s); res = g_atomic_pointer_compare_and_exchange (&vp, &s, &s);
g_assert_false (res); g_assert_false (res);
g_assert_true (vp == 0); g_assert_true (vp == 0);
res = g_atomic_pointer_compare_and_exchange (&vp, 0, 0); res = g_atomic_pointer_compare_and_exchange (&vp, NULL, NULL);
g_assert_true (res); g_assert_true (res);
g_assert_true (vp == 0); g_assert_true (vp == 0);
g_atomic_pointer_set (&ip, 0); g_atomic_pointer_set (&ip, 0);
ip2 = g_atomic_pointer_get (&ip); ip2 = g_atomic_pointer_get (&ip);
g_assert_true (ip2 == 0); g_assert_true (ip2 == 0);
res = g_atomic_pointer_compare_and_exchange (&ip, 0, 0); res = g_atomic_pointer_compare_and_exchange (&ip, NULL, NULL);
g_assert_true (res); g_assert_true (res);
g_assert_true (ip == 0); g_assert_true (ip == 0);
@ -98,7 +98,7 @@ test_types (void)
vp2 = (gpointer) g_atomic_pointer_get (&gs); vp2 = (gpointer) g_atomic_pointer_get (&gs);
gs2 = (gsize) vp2; gs2 = (gsize) vp2;
g_assert_cmpuint (gs2, ==, 0); g_assert_cmpuint (gs2, ==, 0);
res = g_atomic_pointer_compare_and_exchange (&gs, 0, 0); res = g_atomic_pointer_compare_and_exchange (&gs, NULL, NULL);
g_assert_true (res); g_assert_true (res);
g_assert_cmpuint (gs, ==, 0); g_assert_cmpuint (gs, ==, 0);
gs2 = (gsize) g_atomic_pointer_add (&gs, 5); gs2 = (gsize) g_atomic_pointer_add (&gs, 5);
@ -191,14 +191,14 @@ G_GNUC_END_IGNORE_DEPRECATIONS
res = g_atomic_pointer_compare_and_exchange (&vp, &s, &s); res = g_atomic_pointer_compare_and_exchange (&vp, &s, &s);
g_assert_false (res); g_assert_false (res);
g_assert_true (vp == 0); g_assert_true (vp == 0);
res = g_atomic_pointer_compare_and_exchange (&vp, 0, 0); res = g_atomic_pointer_compare_and_exchange (&vp, NULL, NULL);
g_assert_true (res); g_assert_true (res);
g_assert_true (vp == 0); g_assert_true (vp == 0);
g_atomic_pointer_set (&ip, 0); g_atomic_pointer_set (&ip, 0);
ip2 = g_atomic_pointer_get (&ip); ip2 = g_atomic_pointer_get (&ip);
g_assert_true (ip2 == 0); g_assert_true (ip2 == 0);
res = g_atomic_pointer_compare_and_exchange (&ip, 0, 0); res = g_atomic_pointer_compare_and_exchange (&ip, NULL, NULL);
g_assert_true (res); g_assert_true (res);
g_assert_true (ip == 0); g_assert_true (ip == 0);
@ -206,7 +206,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
vp = g_atomic_pointer_get (&gs); vp = g_atomic_pointer_get (&gs);
gs2 = (gsize) vp; gs2 = (gsize) vp;
g_assert_cmpuint (gs2, ==, 0); g_assert_cmpuint (gs2, ==, 0);
res = g_atomic_pointer_compare_and_exchange (&gs, 0, 0); res = g_atomic_pointer_compare_and_exchange (&gs, NULL, NULL);
g_assert_true (res); g_assert_true (res);
g_assert_cmpuint (gs, ==, 0); g_assert_cmpuint (gs, ==, 0);
gs2 = (gsize) g_atomic_pointer_add (&gs, 5); gs2 = (gsize) g_atomic_pointer_add (&gs, 5);