strutil: Fix unit test failure (bug #1093).

Patch by Wojciech Lazarski, thanks a lot!
This commit is contained in:
Uwe Hermann 2018-07-17 19:06:05 +02:00
parent 3387a5d8ee
commit 51bf39a163
1 changed files with 4 additions and 0 deletions

View File

@ -621,12 +621,15 @@ SR_API int sr_parse_rational(const char *str, struct sr_rational *ret)
if (str == endptr && (str[0] == '-' || str[0] == '+') && str[1] == '.') if (str == endptr && (str[0] == '-' || str[0] == '+') && str[1] == '.')
endptr += 1; endptr += 1;
else if ((str == endptr && str[0] == '.' ))
;
else if (errno) else if (errno)
return SR_ERR; return SR_ERR;
if (integral < 0 || str[0] == '-') if (integral < 0 || str[0] == '-')
is_negative = true; is_negative = true;
errno = 0;
if (*endptr == '.') { if (*endptr == '.') {
const char* start = endptr + 1; const char* start = endptr + 1;
fractional = g_ascii_strtoll(start, &endptr, 10); fractional = g_ascii_strtoll(start, &endptr, 10);
@ -635,6 +638,7 @@ SR_API int sr_parse_rational(const char *str, struct sr_rational *ret)
fractional_len = endptr - start; fractional_len = endptr - start;
} }
errno = 0;
if ((*endptr == 'E') || (*endptr == 'e')) { if ((*endptr == 'E') || (*endptr == 'e')) {
exponent = g_ascii_strtoll(endptr + 1, &endptr, 10); exponent = g_ascii_strtoll(endptr + 1, &endptr, 10);
if (errno) if (errno)