Index: src/libical/icalvalue.c =================================================================== --- src/libical/icalvalue.c (révision 1121) +++ src/libical/icalvalue.c (copie de travail) @@ -1052,13 +1052,24 @@ float data; char* str; + char* old_locale; icalerror_check_arg_rz( (value!=0),"value"); data = icalvalue_get_float(value); + /* bypass current locale in order to make + sure snprintf uses a '.' as a separator + set locate to 'C' and keep old locale */ + old_locale = strdup (setlocale (LC_NUMERIC, NULL)); + setlocale (LC_NUMERIC, "C"); + str = (char*)icalmemory_new_buffer(40); snprintf(str,40,"%f",data); + /* restore saved locale */ + setlocale (LC_NUMERIC, old_locale); + free (old_locale); + return str; } @@ -1067,14 +1078,25 @@ struct icalgeotype data; char* str; + char* old_locale; icalerror_check_arg_rz( (value!=0),"value"); data = icalvalue_get_geo(value); + /* bypass current locale in order to make + * sure snprintf uses a '.' as a separator + * set locate to 'C' and keep old locale */ + old_locale = strdup (setlocale (LC_NUMERIC, NULL)); + setlocale (LC_NUMERIC, "C"); + str = (char*)icalmemory_new_buffer(80); snprintf(str,80,"%f;%f",data.lat,data.lon); + /* restore saved locale */ + setlocale (LC_NUMERIC, old_locale); + free (old_locale); + return str; }