[glib/wip/smcv/gdbus-test-leak] gdbus-serialization: Don't leak string containing first serialization




commit de87bcf7ff2bd1e7998ac35ad4cd727485ca14c7
Author: Simon McVittie <smcv collabora com>
Date:   Thu Jan 28 21:24:50 2021 +0000

    gdbus-serialization: Don't leak string containing first serialization
    
    We format the message into a string twice, once for each byte-order,
    but only return the one corresponding to the last byte-order to the
    caller. This means we need to free the first one.
    
    Signed-off-by: Simon McVittie <smcv collabora com>

 gio/tests/gdbus-serialization.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
---
diff --git a/gio/tests/gdbus-serialization.c b/gio/tests/gdbus-serialization.c
index 2ef70b11e..b95244c9a 100644
--- a/gio/tests/gdbus-serialization.c
+++ b/gio/tests/gdbus-serialization.c
@@ -524,6 +524,7 @@ get_and_check_serialization (GVariant *value)
   GDBusMessage *recovered_message;
   GError *error;
   DBusError dbus_error;
+  gchar *last_serialization = NULL;
   gchar *s = NULL;
   guint n;
 
@@ -617,11 +618,19 @@ get_and_check_serialization (GVariant *value)
         }
       g_object_unref (recovered_message);
       g_free (blob);
+
+      if (last_serialization != NULL)
+        {
+          g_assert_cmpstr (last_serialization, ==, s);
+          g_free (last_serialization);
+        }
+
+      last_serialization = g_steal_pointer (&s);
     }
 
   g_object_unref (message);
 
-  return g_steal_pointer (&s);
+  return g_steal_pointer (&last_serialization);
 }
 
 /* If @value is floating, this assumes ownership. */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]