ruby-changes:49479
From: shyouhei <ko1@a...>
Date: Thu, 4 Jan 2018 16:51:23 +0900 (JST)
Subject: [ruby-changes:49479] shyouhei:r61594 (trunk): ULL suffix is a C99ism
shyouhei 2018-01-04 16:51:17 +0900 (Thu, 04 Jan 2018) New Revision: 61594 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=61594 Log: ULL suffix is a C99ism Don't assume long long == 8 bytes. If you can assume C99, there are macros named UINT64_C and such for appropriate integer literal suffixes. If you can't, no way but do a bitwise or. Modified files: trunk/string.c Index: string.c =================================================================== --- string.c (revision 61593) +++ string.c (revision 61594) @@ -440,10 +440,21 @@ static inline const char * https://github.com/ruby/ruby/blob/trunk/string.c#L440 search_nonascii(const char *p, const char *e) { const uintptr_t *s, *t; -#if SIZEOF_VOIDP == 8 -# define NONASCII_MASK 0x8080808080808080ULL -#elif SIZEOF_VOIDP == 4 -# define NONASCII_MASK 0x80808080UL + +#if defined(__STDC_VERSION) && (__STDC_VERSION__ >= 199901L) +# if SIZEOF_UINTPTR_T == 8 +# define NONASCII_MASK UINT64_C(0x8080808080808080) +# elif SIZEOF_UINTPTR_T == 4 +# define NONASCII_MASK UINT32_C(0x80808080) +# endif +#else +# if SIZEOF_UINTPTR_T == 8 +# define NONASCII_MASK ((uintptr_t)0x80808080UL << 32 | (uintptr_t)0x80808080UL) +# elif SIZEOF_UINTPTR_T == 4 +# define NONASCII_MASK 0x80808080UL /* or...? */ +# else +# error "don't know what to do." +# endif #endif if (UNALIGNED_WORD_ACCESS || e - p >= SIZEOF_VOIDP) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/