Fix memory leak displaying string values in the data sheet
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 4 Jul 2020 09:11:47 +0000 (11:11 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 4 Jul 2020 09:11:47 +0000 (11:11 +0200)
src/ui/gui/value-variant.c

index ef40935a8f05ebcdbc4053be76cef78bbdcd4023..7c85786f6c1745a2b7d0cb281c3022612109b055 100644 (file)
 #include <config.h>
 #include <gtk/gtk.h>
 
-#include <string.h>
 #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);