projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix crash when cleaning up after parsing bad MODIFY VARIABLES.
[pspp]
/
src
/
ui
/
gui
/
value-variant.c
diff --git
a/src/ui/gui/value-variant.c
b/src/ui/gui/value-variant.c
index 0789717ab70e91ac162e36b359dd5877d79ae758..f332ccff11045ede52f5d274cb3ac0ff3c2df9cf 100644
(file)
--- a/
src/ui/gui/value-variant.c
+++ b/
src/ui/gui/value-variant.c
@@
-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);
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);
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);
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);
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);
}
g_variant_unref (vdata);