insert variables in var view (#55357)
[pspp] / src / ui / gui / value-variant.c
index 0789717ab70e91ac162e36b359dd5877d79ae758..f332ccff11045ede52f5d274cb3ac0ff3c2df9cf 100644 (file)
@@ -40,17 +40,10 @@ value_variant_new (const union value *in, int width)
 
   if (width == 0)
     vv[IDX_DATA] = g_variant_new_double (in->f);
-  else if (width <= MAX_SHORT_STRING)
-    {
-      char xx[MAX_SHORT_STRING + 1];
-      memset (xx, '\0', MAX_SHORT_STRING + 1);
-      memcpy (xx, in->short_string, width);
-      vv[IDX_DATA] = g_variant_new_bytestring (xx);
-    }
   else
     {
       gchar *q = xmalloc (width + 1);
-      memcpy (q, in->long_string, width);
+      memcpy (q, in->s, width);
       q[width] = '\0';
       vv[IDX_DATA] = g_variant_new_from_data (G_VARIANT_TYPE_BYTESTRING, q,
                                              width + 1, FALSE, NULL, NULL);
@@ -87,12 +80,8 @@ value_variant_get (union value *val, GVariant *v)
   else
     {
       const gchar *data = g_variant_get_bytestring (vdata);
-      if (width <= MAX_SHORT_STRING)
-       memcpy (val->short_string, data, MAX_SHORT_STRING);
-      else
-       {
-         val->long_string = xmemdup (data, width);
-       }
+      size_t len = strlen (data);
+      val->s = xmemdup (data, MIN (width, len));
     }
 
   g_variant_unref (vdata);