summaryrefslogtreecommitdiff
path: root/src/basic/parse-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-01-16 11:48:25 +0100
committerLennart Poettering <lennart@poettering.net>2018-01-16 11:53:43 +0100
commite520e0fc2c6075a592d62175232849f19f7b7417 (patch)
treeffd6f28a082cdf7da812308d4998f25ce682f7e4 /src/basic/parse-util.c
parentfc432c231450166b31127f4cd0965d85e2ea15df (diff)
downloadsystemd-e520e0fc2c6075a592d62175232849f19f7b7417.tar.gz
locale-util: add freelocale() cleanup helper
Diffstat (limited to 'src/basic/parse-util.c')
-rw-r--r--src/basic/parse-util.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c
index 33f94f3fc2..ab80c2b04b 100644
--- a/src/basic/parse-util.c
+++ b/src/basic/parse-util.c
@@ -28,6 +28,7 @@
#include "alloc-util.h"
#include "errno-list.h"
#include "extract-word.h"
+#include "locale-util.h"
#include "macro.h"
#include "parse-util.h"
#include "process-util.h"
@@ -531,9 +532,9 @@ int safe_atoi16(const char *s, int16_t *ret) {
}
int safe_atod(const char *s, double *ret_d) {
+ _cleanup_(freelocalep) locale_t loc = (locale_t) 0;
char *x = NULL;
double d = 0;
- locale_t loc;
assert(s);
assert(ret_d);
@@ -544,16 +545,11 @@ int safe_atod(const char *s, double *ret_d) {
errno = 0;
d = strtod_l(s, &x, loc);
- if (errno > 0) {
- freelocale(loc);
+ if (errno > 0)
return -errno;
- }
- if (!x || x == s || *x) {
- freelocale(loc);
+ if (!x || x == s || *x != 0)
return -EINVAL;
- }
- freelocale(loc);
*ret_d = (double) d;
return 0;
}