diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2025-05-16 14:48:51 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska@appnovation.com> | 2025-05-16 14:48:51 +0000 |
| commit | f40d8d198eea1d91f092c09ee738f751ada741bc (patch) | |
| tree | 19f6fa9f73a0b4fe8c11263ea97b36c362eecc3b /src/libstddjb/alarm_deadline.c | |
| parent | 1be7c0764d4ae35e38032a4fd4afb19b3c9a88ee (diff) | |
| download | skalibs-f40d8d198eea1d91f092c09ee738f751ada741bc.tar.gz | |
bugfix: alarm_timeout with infinite value
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/libstddjb/alarm_deadline.c')
| -rw-r--r-- | src/libstddjb/alarm_deadline.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libstddjb/alarm_deadline.c b/src/libstddjb/alarm_deadline.c index 1844c8c..e050eba 100644 --- a/src/libstddjb/alarm_deadline.c +++ b/src/libstddjb/alarm_deadline.c @@ -7,6 +7,7 @@ #ifdef SKALIBS_HASTIMER #include <errno.h> +#include <limits.h> #include <signal.h> #include <time.h> #include "alarm-internal.h" @@ -22,7 +23,11 @@ int alarm_deadline (tain const *deadline) { struct itimerspec it = { .it_interval = { .tv_sec = 0, .tv_nsec = 0 } } ; struct sigevent se = { .sigev_notify = SIGEV_SIGNAL, .sigev_signo = SIGALRM, .sigev_value = { .sival_int = 0 }, .sigev_notify_function = 0, .sigev_notify_attributes = 0 } ; - if (!timespec_from_tain(&it.it_value, deadline)) return 0 ; + if (!timespec_from_tain(&it.it_value, deadline)) + { + it.it_value.tv_sec = INT_MAX ; + it.it_value.tv_nsec = 0 ; + } if (timer_create(MYCLOCK, &se, &timer_here) < 0) return 0 ; if (timer_settime(timer_here, TIMER_ABSTIME, &it, 0) < 0) { |
