Patch by Wojciech Lazarski, thanks a lot!
if (str == endptr && (str[0] == '-' || str[0] == '+') && str[1] == '.')
endptr += 1;
+ else if ((str == endptr && str[0] == '.' ))
+ ;
else if (errno)
return SR_ERR;
if (integral < 0 || str[0] == '-')
is_negative = true;
+ errno = 0;
if (*endptr == '.') {
const char* start = endptr + 1;
fractional = g_ascii_strtoll(start, &endptr, 10);
fractional_len = endptr - start;
}
+ errno = 0;
if ((*endptr == 'E') || (*endptr == 'e')) {
exponent = g_ascii_strtoll(endptr + 1, &endptr, 10);
if (errno)