about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013-08-07 11:14:45 -0400
committerRich Felker <dalias@aerifal.cx>2013-08-07 11:14:45 -0400
commita0cc022cc79984648e0ea5e7e5e7620686c56b60 (patch)
tree9e182b20d04693a5b96ac9b3cf60e1ddf59690d3
parent734062b298e129a8f8bdae299f8d2b7b19419867 (diff)
downloadmusl-a0cc022cc79984648e0ea5e7e5e7620686c56b60.tar.gz
musl-a0cc022cc79984648e0ea5e7e5e7620686c56b60.tar.xz
musl-a0cc022cc79984648e0ea5e7e5e7620686c56b60.zip
fix ecvt/fcvt decimal point position output
these functions are obsolete and have no modern standard. the text in
SUSv2 is highly ambiguous, specifying that "negative means to the left
of the returned digits", which suggested to me that 0 would mean to
the right of the first digit. however, this does not agree with
historic practice, and the Linux man pages are more clear, specifying
that a negative value means "that the decimal point is to the left of
the start of the string" (in which case, 0 would mean the start of the
string, in accordance with historic practice).
-rw-r--r--src/stdlib/ecvt.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/stdlib/ecvt.c b/src/stdlib/ecvt.c
index 48e70cd8..79c3de63 100644
--- a/src/stdlib/ecvt.c
+++ b/src/stdlib/ecvt.c
@@ -13,7 +13,7 @@ char *ecvt(double x, int n, int *dp, int *sign)
 	for (j=0; tmp[i]!='e'; j+=(tmp[i++]!='.'))
 		buf[j] = tmp[i];
 	buf[j] = 0;
-	*dp = atoi(tmp+i+1);
+	*dp = atoi(tmp+i+1)+1;
 
 	return buf;
 }