From a0bb3b1110007a52e2a15801e31c7f546621d111 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sat, 4 Jul 2020 11:11:47 +0200 Subject: [PATCH] Fix memory leak displaying string values in the data sheet --- src/ui/gui/value-variant.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/ui/gui/value-variant.c b/src/ui/gui/value-variant.c index ef40935a8f..7c85786f6c 100644 --- a/src/ui/gui/value-variant.c +++ b/src/ui/gui/value-variant.c @@ -17,11 +17,9 @@ #include #include -#include #include "value-variant.h" #include "data/value.h" - enum { IDX_WIDTH, @@ -42,10 +40,9 @@ value_variant_new (const union value *in, int width) vv[IDX_DATA] = g_variant_new_double (in->f); else { - gchar *q = xmalloc (width); - memcpy (q, in->s, width); vv[IDX_DATA] = g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE, - q, width, sizeof (gchar)); + in->s, width, + sizeof (gchar)); } return g_variant_new_tuple (vv, 2); @@ -79,7 +76,9 @@ value_variant_get (union value *val, GVariant *v) else { gsize w; - const gchar *data = g_variant_get_fixed_array (vdata, &w, sizeof (gchar)); + const gchar *data = + g_variant_get_fixed_array (vdata, &w, sizeof (gchar)); + if (w != width) g_critical ("Value variant's width does not match its array size"); val->s = xmemdup (data, w); -- 2.30.2