strtod(): Was not returning endptr on error conditions.

This commit is contained in:
Gregory Nutt 2016-08-11 18:20:25 -06:00
parent 61b0ac06bf
commit 155055d564

View File

@ -115,6 +115,8 @@ double_t strtod(FAR const char *str, FAR char **endptr)
negative = 1; /* Fall through to increment position */ negative = 1; /* Fall through to increment position */
case '+': case '+':
p++; p++;
default:
break;
} }
number = 0.; number = 0.;
@ -151,7 +153,8 @@ double_t strtod(FAR const char *str, FAR char **endptr)
if (num_digits == 0) if (num_digits == 0)
{ {
set_errno(ERANGE); set_errno(ERANGE);
return 0.0; number = 0.0;
goto errout;
} }
/* Correct for sign */ /* Correct for sign */
@ -174,6 +177,8 @@ double_t strtod(FAR const char *str, FAR char **endptr)
negative = 1; /* Fall through to increment pos */ negative = 1; /* Fall through to increment pos */
case '+': case '+':
p++; p++;
default:
break;
} }
/* Process string of digits */ /* Process string of digits */
@ -199,7 +204,8 @@ double_t strtod(FAR const char *str, FAR char **endptr)
exponent > __DBL_MAX_EXP__) exponent > __DBL_MAX_EXP__)
{ {
set_errno(ERANGE); set_errno(ERANGE);
return infinite; number = infinite;
goto errout;
} }
/* Scale the result */ /* Scale the result */
@ -220,6 +226,7 @@ double_t strtod(FAR const char *str, FAR char **endptr)
number *= p10; number *= p10;
} }
} }
n >>= 1; n >>= 1;
p10 *= p10; p10 *= p10;
} }
@ -229,6 +236,7 @@ double_t strtod(FAR const char *str, FAR char **endptr)
set_errno(ERANGE); set_errno(ERANGE);
} }
errout:
if (endptr) if (endptr)
{ {
*endptr = p; *endptr = p;