X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fstrutil.c;fp=src%2Fstrutil.c;h=1f558f15ffe4c38f81818a5ef5bb1509403b71b9;hb=51bf39a1633ca5817bc91aff19259e0a9b8fbc13;hp=5f48e87bebc02cd2f0eaca8c516aba7b6349e5a1;hpb=3387a5d8ee7d28cd5927ce36d21765bc051ea175;p=libsigrok.git diff --git a/src/strutil.c b/src/strutil.c index 5f48e87b..1f558f15 100644 --- a/src/strutil.c +++ b/src/strutil.c @@ -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] == '.') 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); @@ -635,6 +638,7 @@ SR_API int sr_parse_rational(const char *str, struct sr_rational *ret) fractional_len = endptr - start; } + errno = 0; if ((*endptr == 'E') || (*endptr == 'e')) { exponent = g_ascii_strtoll(endptr + 1, &endptr, 10); if (errno)