diff options
author | Marcus Lundblad <ml@update.uu.se> | 2019-03-10 22:59:53 +0100 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2019-03-12 14:04:49 +0100 |
commit | e1a6b067dc42618992787e84aadad2ca27ae0017 (patch) | |
tree | a83912b7ca8666916b42fce407f885b2f4a99b3b | |
parent | 1321af7a498111d1ae6942e985b46e12f4d42b17 (diff) | |
download | geocode-glib-e1a6b067dc42618992787e84aadad2ca27ae0017.tar.gz |
geocode-nominatim: Fix parsing of integer JSON values
It seems Nominatim has changed to (sometimes) use integer
values for certain values (such as osm_id and rank) instead
of strings as it was always before.
Closes: #5
-rw-r--r-- | geocode-glib/geocode-nominatim.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/geocode-glib/geocode-nominatim.c b/geocode-glib/geocode-nominatim.c index c1f6bc7..b2abc97 100644 --- a/geocode-glib/geocode-nominatim.c +++ b/geocode-glib/geocode-nominatim.c @@ -1063,21 +1063,24 @@ _geocode_read_nominatim_attributes (JsonReader *reader, } for (i = 0; members[i] != NULL; i++) { - const char *value = NULL; + char *value = NULL; json_reader_read_member (reader, members[i]); if (json_reader_is_value (reader)) { JsonNode *node = json_reader_get_value (reader); if (json_node_get_value_type (node) == G_TYPE_STRING) { - value = json_node_get_string (node); + value = g_strdup (json_node_get_string (node)); if (value && *value == '\0') - value = NULL; + g_clear_pointer (&value, g_free); + } else if (json_node_get_value_type (node) == G_TYPE_INT64) { + gint64 int_value = json_node_get_int (node); + value = g_strdup_printf ("%"G_GINT64_FORMAT, int_value); } } if (value != NULL) { - g_hash_table_insert (ht, g_strdup (members[i]), g_strdup (value)); + g_hash_table_insert (ht, g_strdup (members[i]), value); if (i == 0 && is_address) { if (g_strcmp0 (members[i], "house_number") != 0) |