diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-01-02 11:02:54 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-01-02 11:02:54 -0800 |
commit | c3c3e114541c2daf9a507c10898c4b8d963e86b7 (patch) | |
tree | 13243a51dfb9f2626c8fba61ea0c302bc5017dc4 | |
parent | 6b06553049d438a52127fa722cbd8717d2a13680 (diff) | |
download | txr-c3c3e114541c2daf9a507c10898c4b8d963e86b7.tar.gz txr-c3c3e114541c2daf9a507c10898c4b8d963e86b7.tar.bz2 txr-c3c3e114541c2daf9a507c10898c4b8d963e86b7.zip |
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.
-rw-r--r-- | lib.h | 2 | ||||
-rw-r--r-- | sysif.c | 6 |
2 files changed, 5 insertions, 3 deletions
@@ -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); @@ -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)); |