From 72246a564d11f211928c590a3411dc372886eb6e Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Fri, 11 Dec 2020 15:39:47 +0000 Subject: [PATCH] gdatetime: Use isnan() instead of !isfinite() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- glib/gdatetime.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glib/gdatetime.c b/glib/gdatetime.c index db54aed50..02cc3bd01 100644 --- a/glib/gdatetime.c +++ b/glib/gdatetime.c @@ -1588,7 +1588,7 @@ g_date_time_new (GTimeZone *tz, day < 1 || day > days_in_months[GREGORIAN_LEAP (year)][month] || hour < 0 || hour > 23 || minute < 0 || minute > 59 || - !isfinite (seconds) || + isnan (seconds) || seconds < 0.0 || seconds >= 60.0) return NULL;