hermet pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3932c6838292472b14f6dcfd90e74c59554c9524
commit 3932c6838292472b14f6dcfd90e74c59554c9524 Author: JunsuChoi <[email protected]> Date: Tue Sep 17 21:18:47 2019 +0900 evas_vg_load_svg: Change strtod to eina_convert_strtod_c for locale issue Summary: Crash depending on LOCALE when using strtod. So change to eina_convert_strtod_c which is made to prevent strtod problem. Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9988 --- src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c b/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c index c277ee9d26..97f87c7e96 100644 --- a/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c +++ b/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c @@ -84,7 +84,7 @@ _parse_number(const char **content, double *number) { char *end = NULL; - *number = strtod(*content, &end); + *number = eina_convert_strtod_c(*content, &end); // if the start of string is not number if ((*content) == end) return EINA_FALSE; //skip comma if any @@ -102,7 +102,7 @@ _parse_number(const char **content, double *number) static inline double _to_double(Evas_SVG_Parser *svg_parse, const char *str, SVG_Parser_Length_Type type) { - double parsed_value = strtod(str, NULL); + double parsed_value = eina_convert_strtod_c(str, NULL); if (strstr(str, "cm")) parsed_value = parsed_value * 35.43307; @@ -141,7 +141,7 @@ _gradient_to_double(Evas_SVG_Parser *svg_parse, const char *str, SVG_Parser_Leng { char *end = NULL; - double parsed_value = strtod(str, &end); + double parsed_value = eina_convert_strtod_c(str, &end); double max = 1; /** @@ -182,7 +182,7 @@ _to_offset(const char *str) { char *end = NULL; - double parsed_value = strtod(str, &end); + double parsed_value = eina_convert_strtod_c(str, &end); if (strstr(str, "%")) parsed_value = parsed_value / 100.0; @@ -195,7 +195,7 @@ _to_opacity(const char *str) { char *end = NULL; int a = 0; - double opacity = strtod(str, &end); + double opacity = eina_convert_strtod_c(str, &end); if (*end == '\0') a = lrint(opacity * 255); @@ -277,7 +277,7 @@ _parse_dash_array(const char *str, Efl_Gfx_Dash** dash, int *length) { // skip white space, comma str = _skipcomma(str); - tmp[count++] = strtod(str, &end); + tmp[count++] = eina_convert_strtod_c(str, &end); str = _skipcomma(end); } @@ -337,7 +337,7 @@ _color_parser(const char *value, char **end) { double r; - r = strtod(value + 4, end); + r = eina_convert_strtod_c(value + 4, end); *end = _skip_space(*end, NULL); if (**end == '%') r = 255 * r / 100; @@ -590,7 +590,7 @@ parse_numbers_array(char *str, double *points, int *pt_count) *str == '+' || *str == '.') { - points[count++] = strtod(str, &end); + points[count++] = eina_convert_strtod_c(str, &end); str = end; str = _skip_space(str, NULL); if (*str == ',') @@ -758,7 +758,7 @@ parse_length(const char *str, Svg_Length_Type *type) { *type = length_tags[i].type; } - value = strtod(str, NULL); + value = eina_convert_strtod_c(str, NULL); return value; } --
