gdatetime: Use isnan() instead of !isfinite()

Both are provided by libm, but `isnan()` is provided as a macro, whereas
`isfinite()` is an actual function, and hence libm has to be available
at runtime. That didn’t trivially work on FreeBSD, resulting in this
refactor.

`isfinite(x)` is equivalent to `!isnan(x) && !isinfinite(x)`. The case
of `x` being (negative or positive) infinity is already handled by the
range checks on the next line, so it’s safe to switch to `isnan()` here.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
This commit is contained in:
Philip Withnall 2020-12-11 15:39:47 +00:00
parent e470dca95f
commit 72246a564d

View File

@ -1588,7 +1588,7 @@ g_date_time_new (GTimeZone *tz,
day < 1 || day > days_in_months[GREGORIAN_LEAP (year)][month] || day < 1 || day > days_in_months[GREGORIAN_LEAP (year)][month] ||
hour < 0 || hour > 23 || hour < 0 || hour > 23 ||
minute < 0 || minute > 59 || minute < 0 || minute > 59 ||
!isfinite (seconds) || isnan (seconds) ||
seconds < 0.0 || seconds >= 60.0) seconds < 0.0 || seconds >= 60.0)
return NULL; return NULL;