[json-glib] Handle integer to float/double conversions in json_deserialize_pspec()
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [json-glib] Handle integer to float/double conversions in json_deserialize_pspec()
- Date: Sun, 31 Jul 2011 17:20:13 +0000 (UTC)
commit bcfac335a8e4086ff6afa5f267f9886a4d1b6370
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date: Sun Jul 31 02:38:08 2011 -0400
Handle integer to float/double conversions in json_deserialize_pspec()
It happens that while serializing that float/double properties are
set to round numbers, this results in deserialization as gint64
values and a parse failure. This patch addresses it by accepting
round gint64 numbers as valid values for float/double properties.
json-glib/json-gobject.c | 22 +++++++++++++++++++++-
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:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]