summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2013-09-23 17:04:53 -0400
committerRyan Lortie <desrt@desrt.ca>2013-09-23 17:07:33 -0400
commit9da87f597cb81965f697c09a71e7d1dada010561 (patch)
tree85698dbb5043acacf3ea3bf5f9c708d2e627dff1 /tests
parent748c86e45f976639657284a40834484c1724732a (diff)
fix up refcount/properties test case
Recent changes to the properties testcase made invalid use of the GArray free function. This free function takes a pointer to the item to be freed, not the item itself. Since that item was a pointer to a GObject, g_object_unref() was getting a GObject**, rather than a GObject*. The use of GArray in this testcase is pretty questionable in the first place, so just use C arrays instead.
Diffstat (limited to 'tests')
-rw-r--r--tests/refcount/properties.c43
1 files changed, 13 insertions, 30 deletions
diff --git a/tests/refcount/properties.c b/tests/refcount/properties.c
index 93f9f933f..19121a9b1 100644
--- a/tests/refcount/properties.c
+++ b/tests/refcount/properties.c
@@ -189,63 +189,46 @@ run_thread (GTest * test)
int
main (int argc, char **argv)
{
+#define N_THREADS 5
+ GThread *test_threads[N_THREADS];
+ GTest *test_objects[N_THREADS];
gint i;
- GArray *test_objects;
- GArray *test_threads;
- const gint n_threads = 5;
g_print ("START: %s\n", argv[0]);
g_log_set_always_fatal (G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL | g_log_set_always_fatal (G_LOG_FATAL_MASK));
- test_objects = g_array_new (FALSE, FALSE, sizeof (GTest *));
- g_array_set_clear_func (test_objects, (GDestroyNotify) g_object_unref);
-
- for (i = 0; i < n_threads; i++) {
+ for (i = 0; i < N_THREADS; i++) {
GTest *test;
-
+
test = g_object_new (G_TYPE_TEST, NULL);
- g_array_append_val (test_objects, test);
+ test_objects[i] = test;
g_assert (test->count == test->dummy);
g_signal_connect (test, "notify::dummy", G_CALLBACK (dummy_notify), NULL);
}
-
- test_threads = g_array_new (FALSE, FALSE, sizeof (GThread *));
stopping = FALSE;
- for (i = 0; i < n_threads; i++) {
- GThread *thread;
- GTest *test;
+ for (i = 0; i < N_THREADS; i++)
+ test_threads[i] = g_thread_create ((GThreadFunc) run_thread, test_objects[i], TRUE, NULL);
- test = g_array_index (test_objects, GTest *, i);
-
- thread = g_thread_create ((GThreadFunc) run_thread, test, TRUE, NULL);
- g_array_append_val (test_threads, thread);
- }
g_usleep (3000000);
stopping = TRUE;
g_print ("\nstopping\n");
/* join all threads */
- for (i = 0; i < n_threads; i++) {
- GThread *thread;
-
- thread = g_array_index (test_threads, GThread *, i);
- g_thread_join (thread);
- }
+ for (i = 0; i < N_THREADS; i++)
+ g_thread_join (test_threads[i]);
g_print ("stopped\n");
- for (i = 0; i < n_threads; i++) {
- GTest *test;
-
- test = g_array_index (test_objects, GTest *, i);
+ for (i = 0; i < N_THREADS; i++) {
+ GTest *test = test_objects[i];
g_assert (test->count == test->dummy);
+ g_object_unref (test);
}
- g_array_free (test_objects, TRUE);
return 0;
}