1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

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.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61594 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shyouhei 2018-01-04 07:51:17 +00:00
parent fa26bdc601
commit beaf2ace87

View file

@ -440,10 +440,21 @@ static inline const char *
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) {