summaryrefslogtreecommitdiff
path: root/json-glib/json-gobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'json-glib/json-gobject.c')
-rw-r--r--json-glib/json-gobject.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/json-glib/json-gobject.c b/json-glib/json-gobject.c
index 68d0d95..bb63467 100644
--- a/json-glib/json-gobject.c
+++ b/json-glib/json-gobject.c
@@ -516,7 +516,6 @@ json_deserialize_pspec (GValue *value,
{
case G_TYPE_BOOLEAN:
case G_TYPE_INT64:
- case G_TYPE_DOUBLE:
case G_TYPE_STRING:
if (G_VALUE_HOLDS (&node_value, G_VALUE_TYPE (value)))
{
@@ -557,12 +556,33 @@ json_deserialize_pspec (GValue *value,
}
break;
+ case G_TYPE_DOUBLE:
+
+ if (G_VALUE_HOLDS (&node_value, G_TYPE_DOUBLE))
+ {
+ g_value_set_double (value, g_value_get_double (&node_value));
+ retval = TRUE;
+ }
+ else if (G_VALUE_HOLDS (&node_value, G_TYPE_INT64))
+ {
+ g_value_set_double (value, (gdouble) g_value_get_int64 (&node_value));
+ retval = TRUE;
+ }
+
+ break;
+
case G_TYPE_FLOAT:
if (G_VALUE_HOLDS (&node_value, G_TYPE_DOUBLE))
{
g_value_set_float (value, (gfloat) g_value_get_double (&node_value));
retval = TRUE;
}
+ else if (G_VALUE_HOLDS (&node_value, G_TYPE_INT64))
+ {
+ g_value_set_float (value, (gfloat) g_value_get_int64 (&node_value));
+ retval = TRUE;
+ }
+
break;
case G_TYPE_ENUM: