[babl] add internal babl_parse_double; to avoid using atof
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [babl] add internal babl_parse_double; to avoid using atof
- Date: Mon, 9 Jun 2014 00:35:46 +0000 (UTC)
commit 413e7f19546f9730930e69b0bb3cc07651cb0a59
Author: Øyvind Kolås <pippin gimp org>
Date: Mon Jun 9 02:30:38 2014 +0200
add internal babl_parse_double; to avoid using atof
atof is locale dependent; it was being used two places parsing floating point
values from environment variables.
babl/babl-fish-path.c | 2 +-
babl/babl-fish-stats.c | 2 +-
babl/babl-internal.h | 22 ++++++++++++++++++++++
3 files changed, 24 insertions(+), 2 deletions(-)
---
diff --git a/babl/babl-fish-path.c b/babl/babl-fish-path.c
index 3b90edf..5dc0601 100644
--- a/babl/babl-fish-path.c
+++ b/babl/babl-fish-path.c
@@ -109,7 +109,7 @@ static double legal_error (void)
env = getenv ("BABL_TOLERANCE");
if (env && env[0] != '\0')
- error = atof (env);
+ error = babl_parse_double (env);
else
error = BABL_LEGAL_ERROR;
return error;
diff --git a/babl/babl-fish-stats.c b/babl/babl-fish-stats.c
index 9c6d52e..c0b34de 100644
--- a/babl/babl-fish-stats.c
+++ b/babl/babl-fish-stats.c
@@ -252,7 +252,7 @@ static double legal_error (void)
env = getenv ("BABL_TOLERANCE");
if (env && env[0] != '\0')
- error = atof (env);
+ error = babl_parse_double (env);
else
error = BABL_LEGAL_ERROR;
return error;
diff --git a/babl/babl-internal.h b/babl/babl-internal.h
index cc05660..eb80dd0 100644
--- a/babl/babl-internal.h
+++ b/babl/babl-internal.h
@@ -295,4 +295,26 @@ babl_##klass##_from_id (int id) \
#define BABL(obj) ((Babl*)(obj))
+static inline double babl_parse_double (const char *str)
+{
+ double result = 0;
+ if (!str)
+ return 0.0;
+ result = atoi (str);
+ if (strchr (str, '.'))
+ {
+ char *p = strchr (str, '.') + 1;
+ double d = 10;
+ for (;*p && *p > '0' && *p < '9';p++, d *= 10)
+ {
+ if (result >= 0)
+ result += (*p - '0') / d;
+ else
+ result -= (*p - '0') / d;
+ }
+ }
+ return result;
+}
+
+
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]