diff --git a/test/c_glib/src/test_client.c b/test/c_glib/src/test_client.c
index b1fe065..fd429c8 100644
--- a/test/c_glib/src/test_client.c
+++ b/test/c_glib/src/test_client.c
@@ -204,7 +204,7 @@
       gint byte_thing, i32_thing, inner_byte_thing, inner_i32_thing;
       gint64 i64_thing, inner_i64_thing;
 
-      TTestXtruct  *xtruct_out,  *xtruct_in,  *inner_xtruct_in;
+      TTestXtruct  *xtruct_out,  *xtruct_out2, *xtruct_in,  *inner_xtruct_in;
       TTestXtruct2 *xtruct2_out, *xtruct2_in;
 
       GHashTable *map_out, *map_in, *inner_map_in;
@@ -217,8 +217,9 @@
       GArray *list_out, *list_in;
 
       TTestNumberz numberz;
+      TTestNumberz numberz2;
 
-      TTestUserId user_id, *user_id_ptr;
+      TTestUserId user_id, *user_id_ptr, *user_id_ptr2;
 
       TTestInsanity *insanity_out, *insanity_in;
       GHashTable *user_map;
@@ -1021,17 +1022,28 @@
                     NULL);
 
       numberz = T_TEST_NUMBERZ_FIVE;
+      numberz2 = T_TEST_NUMBERZ_EIGHT;
       user_id_ptr = g_malloc (sizeof *user_id_ptr);
-      *user_id_ptr = 5000;
+      *user_id_ptr = 5;
+      user_id_ptr2 = g_malloc (sizeof *user_id_ptr);
+      *user_id_ptr2 = 8;
       g_hash_table_insert (user_map, (gpointer)numberz, user_id_ptr);
+      g_hash_table_insert (user_map, (gpointer)numberz2, user_id_ptr2);
       g_hash_table_unref (user_map);
 
       xtruct_out = g_object_new (T_TEST_TYPE_XTRUCT,
-                                 "string_thing", "Truck",
-                                 "byte_thing",   8,
-                                 "i32_thing",    8,
-                                 "i64_thing",    8LL,
+                                 "string_thing", "Hello2",
+                                 "byte_thing",   2,
+                                 "i32_thing",    2,
+                                 "i64_thing",    2LL,
                                  NULL);
+      xtruct_out2 = g_object_new (T_TEST_TYPE_XTRUCT,
+                                 "string_thing", "Goodbye4",
+                                 "byte_thing",   4,
+                                 "i32_thing",    4,
+                                 "i64_thing",    4LL,
+                                 NULL);
+      g_ptr_array_add (xtructs, xtruct_out2);
       g_ptr_array_add (xtructs, xtruct_out);
       g_ptr_array_unref (xtructs);
 
diff --git a/test/c_glib/src/thrift_test_handler.c b/test/c_glib/src/thrift_test_handler.c
index d82befb..a9983b5 100644
--- a/test/c_glib/src/thrift_test_handler.c
+++ b/test/c_glib/src/thrift_test_handler.c
@@ -472,8 +472,6 @@
                                    const TTestInsanity  *argument,
                                    GError              **error)
 {
-  TTestXtruct *hello;
-  TTestXtruct *goodbye;
   TTestXtruct *xtruct_in;
 
   gchar *string_thing = NULL;
@@ -483,7 +481,6 @@
 
   GPtrArray *xtructs;
 
-  TTestInsanity *crazy;
   TTestInsanity *looney;
 
   GHashTable *user_map;
@@ -502,50 +499,10 @@
   guint i;
 
   THRIFT_UNUSED_VAR (iface);
-  THRIFT_UNUSED_VAR (argument);
   THRIFT_UNUSED_VAR (error);
 
   printf ("testInsanity()\n");
 
-  hello = g_object_new (T_TEST_TYPE_XTRUCT,
-                        "string_thing", "Hello2",
-                        "byte_thing",   2,
-                        "i32_thing",    2,
-                        "i64_thing",    2,
-                        NULL);
-
-  goodbye = g_object_new (T_TEST_TYPE_XTRUCT,
-                          "string_thing", "Goodbye4",
-                          "byte_thing",   4,
-                          "i32_thing",    4,
-                          "i64_thing",    4,
-                          NULL);
-
-  crazy = g_object_new (T_TEST_TYPE_INSANITY, NULL);
-  g_object_get (crazy,
-                "userMap", &user_map,
-                "xtructs", &xtructs,
-                NULL);
-
-  user_id = g_malloc(sizeof *user_id);
-  *user_id = 8;
-  g_hash_table_insert (user_map,
-                       GINT_TO_POINTER (T_TEST_NUMBERZ_EIGHT),
-                       user_id);
-
-  g_ptr_array_add (xtructs, goodbye);
-
-  user_id = g_malloc(sizeof *user_id);
-  *user_id = 5;
-  g_hash_table_insert (user_map,
-                       GINT_TO_POINTER (T_TEST_NUMBERZ_FIVE),
-                       user_id);
-
-  g_ptr_array_add (xtructs, hello);
-
-  g_hash_table_unref (user_map);
-  g_ptr_array_unref (xtructs);
-
   first_map = g_hash_table_new_full (g_direct_hash,
                                      g_direct_equal,
                                      NULL,
@@ -557,17 +514,17 @@
 
   g_hash_table_insert (first_map,
                        GINT_TO_POINTER (T_TEST_NUMBERZ_TWO),
-                       crazy);
+                       argument);
   g_hash_table_insert (first_map,
                        GINT_TO_POINTER (T_TEST_NUMBERZ_THREE),
-                       crazy);
+                       argument);
 
-  /* Increment crazy's ref count since first_map now holds two
+  /* Increment argument's ref count since first_map now holds two
      references to it and would otherwise attempt to deallocate it
      twice during destruction. We do this instead of creating a copy
-     of crazy in order to mimic the C++ implementation (and since,
-     frankly, the world needs less crazy, not more). */
-  g_object_ref (crazy);
+     of argument in order to mimic the C++ implementation (and since,
+     frankly, the world needs less argument, not more). */
+  g_object_ref (argument);
 
   looney = g_object_new (T_TEST_TYPE_INSANITY, NULL);
   g_hash_table_insert (second_map,
