From bdf1ad69d66c42dfecc7b9010f11a2e6acc9139d Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Wed, 11 Dec 2013 14:54:22 -0600 Subject: [PATCH] libc logic should not directly assign errno, but should use set_errno() macro. This is because in the kernel build, errno is a system call --- libc/math/lib_sqrt.c | 2 +- libc/math/lib_sqrtf.c | 2 +- libc/math/lib_sqrtl.c | 2 +- libc/stdio/lib_sscanf.c | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libc/math/lib_sqrt.c b/libc/math/lib_sqrt.c index e8a1c42ea2..dbab598bc1 100644 --- a/libc/math/lib_sqrt.c +++ b/libc/math/lib_sqrt.c @@ -48,7 +48,7 @@ double sqrt(double x) if (x < 0.0) { - errno = EDOM; + set_errno(EDOM); return NAN; } diff --git a/libc/math/lib_sqrtf.c b/libc/math/lib_sqrtf.c index cf45ccacc3..e70a1de72a 100644 --- a/libc/math/lib_sqrtf.c +++ b/libc/math/lib_sqrtf.c @@ -49,7 +49,7 @@ float sqrtf(float x) if (x < 0.0) { - errno = EDOM; + set_errno(EDOM); return NAN; } diff --git a/libc/math/lib_sqrtl.c b/libc/math/lib_sqrtl.c index 4035992feb..181adf0c80 100644 --- a/libc/math/lib_sqrtl.c +++ b/libc/math/lib_sqrtl.c @@ -50,7 +50,7 @@ long double sqrtl(long double x) if (x < 0.0) { - errno = EDOM; + set_errno(EDOM); return NAN; } diff --git a/libc/stdio/lib_sscanf.c b/libc/stdio/lib_sscanf.c index b4c7ef9fe5..00d4b71f61 100644 --- a/libc/stdio/lib_sscanf.c +++ b/libc/stdio/lib_sscanf.c @@ -446,7 +446,7 @@ int vsscanf(FAR const char *buf, FAR const char *fmt, va_list ap) long tmplong; errsave = errno; - errno = 0; + set_errno(0); tmplong = strtol(tmp, &endptr, base); /* Number can't be converted */ @@ -456,7 +456,7 @@ int vsscanf(FAR const char *buf, FAR const char *fmt, va_list ap) return count; } - errno = errsave; + set_errno(errno); /* We have to check whether we need to return a long * or an int. @@ -556,7 +556,7 @@ int vsscanf(FAR const char *buf, FAR const char *fmt, va_list ap) double_t dvalue; errsave = errno; - errno = 0; + set_errno(0); dvalue = strtod(tmp, &endptr); /* Number can't be converted */ @@ -566,7 +566,7 @@ int vsscanf(FAR const char *buf, FAR const char *fmt, va_list ap) return count; } - errno = errsave; + set_errno(errsave); /* We have to check whether we need to return a float * or a double.