about summary refs log tree commit diff
path: root/src/stdlib
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-04-19 12:47:34 -0400
committerRich Felker <dalias@aerifal.cx>2012-04-19 12:47:34 -0400
commitcb81b6947c0277a6a27ddc699d716e9cf2b524aa (patch)
tree50c78b49bb6d81a726b1d58026757e7d1185a9ac /src/stdlib
parent769d3d349824fb45218972a1cf0e912cfee62d51 (diff)
downloadmusl-cb81b6947c0277a6a27ddc699d716e9cf2b524aa.tar.gz
musl-cb81b6947c0277a6a27ddc699d716e9cf2b524aa.tar.xz
musl-cb81b6947c0277a6a27ddc699d716e9cf2b524aa.zip
fix really bad breakage in strtol, etc.: failure to accept leading spaces
Diffstat (limited to 'src/stdlib')
-rw-r--r--src/stdlib/strtod.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/stdlib/strtod.c b/src/stdlib/strtod.c
index ecfabdf1..1886efa5 100644
--- a/src/stdlib/strtod.c
+++ b/src/stdlib/strtod.c
@@ -5,16 +5,14 @@
 
 static long double strtox(const char *s, char **p, int prec)
 {
-	char *t = (char *)s;
-	while (isspace(*t)) t++;
 	FILE f = {
-		.buf = (void *)t, .rpos = (void *)t,
+		.buf = (void *)s, .rpos = (void *)s,
 		.rend = (void *)-1, .lock = -1
 	};
 	shlim(&f, 0);
-	long double y = __floatscan(&f, -1, prec, 1);
+	long double y = __floatscan(&f, prec, 1);
 	off_t cnt = shcnt(&f);
-	if (p) *p = cnt ? t + cnt : (char *)s;
+	if (p) *p = cnt ? (char *)s + cnt : (char *)s;
 	return y;
 }