From eccac0d5e99577d1dac8bd9776ecf9f23e4c8ad8 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sun, 2 Jan 2022 11:02:54 -0800 Subject: sysif: rlim constants: use signed/unsigned-agnostic macro. * lib.h (num_ex): New macro. Uses unum if the argument is out of range for the signed type. Thus we can use this with unsigned constants that would wrap negative if passed to num. This is useful if some type in a system header file might be signed or unsigned. * sysif.c (sysif_init): Use num_ex for the RLIM_* constants. I'm observing values of -1 which should really be large, positive values in the rlim_t type, that being unsigned. --- lib.h | 2 ++ sysif.c | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib.h b/lib.h index b2cadfac..f3d45e2b 100644 --- a/lib.h +++ b/lib.h @@ -768,6 +768,8 @@ val plist_to_alist(val list); val improper_plist_to_alist(val list, val boolean_keys); val num(cnum val); val unum(ucnum u); +#define num_ex(x) if3((x) > (ucnum) INT_PTR_MAX, unum(x), num(x)) + val flo(double val); cnum c_num(val num, val self); ucnum c_unum(val num, val self); diff --git a/sysif.c b/sysif.c index 56817f2c..be6e020a 100644 --- a/sysif.c +++ b/sysif.c @@ -3173,9 +3173,9 @@ void sysif_init(void) reg_varl(intern(lit("rlim-infinity"), user_package), rlim_inf); } #else - reg_varl(intern(lit("rlim-saved-max"), user_package), num_fast(RLIM_SAVED_MAX)); - reg_varl(intern(lit("rlim-saved-cur"), user_package), num_fast(RLIM_SAVED_CUR)); - reg_varl(intern(lit("rlim-infinity"), user_package), num_fast(RLIM_INFINITY)); + reg_varl(intern(lit("rlim-saved-max"), user_package), num_ex(RLIM_SAVED_MAX)); + reg_varl(intern(lit("rlim-saved-cur"), user_package), num_ex(RLIM_SAVED_CUR)); + reg_varl(intern(lit("rlim-infinity"), user_package), num_ex(RLIM_INFINITY)); #endif reg_varl(intern(lit("rlimit-core"), user_package), num_fast(RLIMIT_CORE)); reg_varl(intern(lit("rlimit-cpu"), user_package), num_fast(RLIMIT_CPU)); -- cgit v1.2.3