regex: don't assume uint64_t or uint32_t
[gnulib.git] / lib / regcomp.c
index b51a9a6..7996dc0 100644 (file)
@@ -956,18 +956,22 @@ init_word_char (re_dfa_t *dfa)
   int ch = 0;
   if (BE (dfa->map_notascii == 0, 1))
     {
+      bitset_word_t bits0 = 0x00000000;
+      bitset_word_t bits1 = 0x03ff0000;
+      bitset_word_t bits2 = 0x87fffffe;
+      bitset_word_t bits3 = 0x07fffffe;
       if (BITSET_WORD_BITS == 64)
        {
-         dfa->word_char[0] = UINT64_C (0x03ff000000000000);
-         dfa->word_char[1] = UINT64_C (0x07fffffe87fffffe);
+         dfa->word_char[0] = bits1 << 31 << 1 | bits0;
+         dfa->word_char[1] = bits3 << 31 << 1 | bits2;
          i = 2;
        }
       else if (BITSET_WORD_BITS == 32)
        {
-         dfa->word_char[0] = UINT32_C (0x00000000);
-         dfa->word_char[1] = UINT32_C (0x03ff0000);
-         dfa->word_char[2] = UINT32_C (0x87fffffe);
-         dfa->word_char[3] = UINT32_C (0x07fffffe);
+         dfa->word_char[0] = bits0;
+         dfa->word_char[1] = bits1;
+         dfa->word_char[2] = bits2;
+         dfa->word_char[3] = bits3;
          i = 4;
        }
       else