From: Matthew Fernandez Date: Sat, 12 Sep 2020 18:35:58 +0000 (-0700) Subject: remove use of _more_long_int and _more_void_int X-Git-Tag: 2.46.0~20^2^2~76^2~13 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9d7335e9556068ef357fc9394d2177d4a7e57a25;p=graphviz remove use of _more_long_int and _more_void_int These macros are created by the iffe interpreter, but we do not need to perform this kind of compile time testing. Modern compilers are clever enough to optimize sizeof comparisons. This change uses intptr_t and uintptr_t which are technically not available until C99, but they are used elsewhere in the codebase already. Related to #1422 and #1521. --- diff --git a/lib/sfio/sfvprintf.c b/lib/sfio/sfvprintf.c index b68507821..3c34974c5 100644 --- a/lib/sfio/sfvprintf.c +++ b/lib/sfio/sfvprintf.c @@ -11,6 +11,7 @@ * Contributors: See CVS logs. Details at http://www.graphviz.org/ *************************************************************************/ +#include #include /* The engine for formatting data @@ -576,13 +577,13 @@ int sfvprintf(Sfio_t * f, const char *form, va_list args) flags = (flags & ~(SFFMT_SIGN | SFFMT_BLANK | SFFMT_ZERO)) | SFFMT_ALTER; -#if _more_void_int - lv = (Sflong_t) ((Sfulong_t) argv.vp); - goto long_cvt; -#else - v = (int) ((uint) argv.vp); - goto int_cvt; -#endif + if (sizeof(void*) > sizeof(int)) { + lv = (Sflong_t)(intptr_t)argv.vp; + goto long_cvt; + } else { + v = (int)(intptr_t)argv.vp; + goto int_cvt; + } case 'o': base = 8; n_s = 7; @@ -617,11 +618,12 @@ int sfvprintf(Sfio_t * f, const char *form, va_list args) n_s = base == 10 ? -1 : 0; int_arg: -#if _more_long_int || _more_void_int - if (FMTCMP(size, Sflong_t, Sflong_t)) { + if ((sizeof(long) > sizeof(int) || sizeof(void*) > sizeof(int)) + && FMTCMP(size, Sflong_t, Sflong_t)) { lv = argv.ll; goto long_cvt; - } else if (FMTCMP(size, long, Sflong_t)) { + } else if ((sizeof(long) > sizeof(int) || sizeof(void*) > sizeof(int)) + && FMTCMP(size, long, Sflong_t)) { if (fmt == 'd') lv = (Sflong_t) argv.l; else @@ -651,7 +653,6 @@ int sfvprintf(Sfio_t * f, const char *form, va_list args) } while ((lv = ((Sfulong_t) lv) / base)); } } else -#endif if (sizeof(short) < sizeof(int) && FMTCMP(size, short, Sflong_t)) { if (ft && ft->extf && (ft->flags & SFFMT_VALUE)) { diff --git a/lib/sfio/sfvscanf.c b/lib/sfio/sfvscanf.c index 91dc8e970..2ba6b182d 100644 --- a/lib/sfio/sfvscanf.c +++ b/lib/sfio/sfvscanf.c @@ -11,6 +11,7 @@ * Contributors: See CVS logs. Details at http://www.graphviz.org/ *************************************************************************/ +#include #include /* The main engine for reading formatted data @@ -650,13 +651,9 @@ int sfvscanf(Sfio_t * f, const char *form, va_list args) if (value) { n_assign += 1; - if (fmt == 'p') -#if _more_void_int - *((void **) value) = (void *) ((ulong) argv.lu); -#else - *((void **) value) = (void *) ((uint) argv.lu); -#endif - else if (sizeof(long) > sizeof(int) && + if (fmt == 'p') { + *((void **) value) = (void *)(uintptr_t)argv.lu; + } else if (sizeof(long) > sizeof(int) && FMTCMP(size, long, Sflong_t)) { if (fmt == 'd' || fmt == 'i') *((long *) value) = (long) argv.ll;