diff options
author | Kevin Ryde <user42@zip.com.au> | 2003-07-08 00:41:34 +0000 |
---|---|---|
committer | Kevin Ryde <user42@zip.com.au> | 2003-07-08 00:41:34 +0000 |
commit | 23c96d9b151a42c0d0fd21db1cd8bcf8acd0feb5 (patch) | |
tree | 500d5a77630e73e37670f93ab4e7a1bd75fc2e91 | |
parent | 005d2366efcda82c20189aa622b832fe9f9a929f (diff) | |
download | guile-23c96d9b151a42c0d0fd21db1cd8bcf8acd0feb5.tar.gz |
Matthias Koeppe <mkoeppe@merkur.math.uni-magdeburg.de>:
(scm_t_bits, scm_t_signed_bits, etc): Avoid solaris empty
defines of INTPTR_MAX and UINTPTR_MAX, combine conditionals for
scm_t_bits and scm_t_signed_bits to avoid any chance of one and not
the other using intptr_t.
-rw-r--r-- | libguile/tags.h | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/libguile/tags.h b/libguile/tags.h index 6665a5ee2..d43d95b41 100644 --- a/libguile/tags.h +++ b/libguile/tags.h @@ -39,24 +39,30 @@ /* In the beginning was the Word: */ -#if SCM_SIZEOF_INTPTR_T != 0 && defined(INTPTR_MAX) && defined(INTPTR_MIN) +/* On Solaris 7 and 8, /usr/include/sys/int_limits.h defines + INTPTR_MAX and UINTPTR_MAX to empty, INTPTR_MIN is not defined. + To avoid uintptr_t and intptr_t in this case we require + UINTPTR_MAX-0 != 0 etc. */ +#if SCM_SIZEOF_INTPTR_T != 0 && defined(INTPTR_MAX) && defined(INTPTR_MIN) \ + && INTPTR_MAX-0 != 0 && INTPTR_MIN-0 != 0 \ + && SCM_SIZEOF_UINTPTR_T != 0 && defined(UINTPTR_MAX) && UINTPTR_MAX-0 != 0 + typedef intptr_t scm_t_signed_bits; #define SCM_T_SIGNED_BITS_MAX INTPTR_MAX #define SCM_T_SIGNED_BITS_MIN INTPTR_MIN -#else -typedef signed long scm_t_signed_bits; -#define SCM_T_SIGNED_BITS_MAX LONG_MAX -#define SCM_T_SIGNED_BITS_MIN LONG_MIN -#endif - -#if SCM_SIZEOF_UINTPTR_T != 0 && defined(UINTPTR_MAX) typedef uintptr_t scm_t_bits; #define SIZEOF_SCM_T_BITS SCM_SIZEOF_UINTPTR_T #define SCM_T_BITS_MAX UINTPTR_MAX + #else + +typedef signed long scm_t_signed_bits; +#define SCM_T_SIGNED_BITS_MAX LONG_MAX +#define SCM_T_SIGNED_BITS_MIN LONG_MIN typedef unsigned long scm_t_bits; #define SIZEOF_SCM_T_BITS SCM_SIZEOF_UNSIGNED_LONG #define SCM_T_BITS_MAX ULONG_MAX + #endif /* But as external interface, we use SCM, which may, according to the desired |