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:
parent
fa26bdc601
commit
beaf2ace87
1 changed files with 15 additions and 4 deletions
19
string.c
19
string.c
|
@ -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) {
|
||||
|
|
Loading…
Add table
Reference in a new issue