diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c
index 1bf0320854..379d3abe6b 100644
--- a/tests/check-qom-proplist.c
+++ b/tests/check-qom-proplist.c
@@ -594,6 +594,7 @@ static void test_dummy_get_set_ptr_struct(void)
     g_assert_cmpint(ret->enum1, ==, val.enum1);
     g_free(val.string);
     qapi_free_UserDefOne(ret);
+    object_unref(OBJECT(dobj));
 }

 static void test_dummy_get_set_ptr_contravariant(void)
@@ -617,7 +618,9 @@ static void test_dummy_get_set_ptr_contravariant(void)

     OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv",
                             UserDefOneMore, &local_err);
-    g_assert(local_err);
+    error_free_or_abort(&local_err);
+    object_unref(OBJECT(dobj));
+    g_free(val.string);
 }

 static void test_dummy_get_set_ptr_covariant(void)
@@ -648,6 +651,7 @@ static void test_dummy_get_set_ptr_covariant(void)

     g_assert_cmpint(ret->integer, ==, 0);
     qapi_free_UserDefZero(ret);
+    object_unref(OBJECT(dobj));
 }

 static void test_dummy_get_set_ptr_error(void)
@@ -680,6 +684,8 @@ static void test_dummy_get_set_ptr_error(void)
     g_assert_cmpstr(ret->string, ==, "dummy string");
     g_assert(!ret->has_enum1);
     qapi_free_UserDefOne(ret);
+    object_unref(OBJECT(dobj));
+    g_free(val.string);
 }

 int main(int argc, char **argv)
