[tracker/wip/carlosg/double-precision: 2/4] libtracker-data: Use g_ascii_dtostr/strtod to transform doubles



commit b7cb039ce452d8d4f869134060a321a8e1c3269e
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sat Mar 2 17:40:18 2019 +0100

    libtracker-data: Use g_ascii_dtostr/strtod to transform doubles
    
    Using locale dependent variants is a very very bad idea. Use the
    locale-independent glib API.

 src/libtracker-data/tracker-data-update.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 47426f674..c5d2941fc 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -1659,7 +1659,7 @@ string_to_gvalue (const gchar         *value,
                break;
        case TRACKER_PROPERTY_TYPE_DOUBLE:
                g_value_init (gvalue, G_TYPE_DOUBLE);
-               g_value_set_double (gvalue, atof (value));
+               g_value_set_double (gvalue, g_ascii_strtod (value, NULL));
                break;
        case TRACKER_PROPERTY_TYPE_DATE:
                g_value_init (gvalue, G_TYPE_INT64);
@@ -1700,7 +1700,9 @@ gvalue_to_string (TrackerPropertyType  type,
                retval = g_value_get_int64 (gvalue) == 0 ? g_strdup ("false") : g_strdup ("true");
                break;
        case TRACKER_PROPERTY_TYPE_DOUBLE:
-               retval = g_strdup_printf ("%f", g_value_get_double (gvalue));
+               retval = g_new0 (char, G_ASCII_DTOSTR_BUF_SIZE);
+               g_ascii_dtostr (retval, G_ASCII_DTOSTR_BUF_SIZE,
+                               g_value_get_double (gvalue));
                break;
        case TRACKER_PROPERTY_TYPE_DATE:
                datet = g_value_get_int64 (gvalue);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]