diff --git a/src/encode.c b/src/encode.c index db08e24cf6bc88691c3de68071e1fed37a276afb..c5b4594b0da6e69215764f54a1bf2fd1382a91fa 100644 --- a/src/encode.c +++ b/src/encode.c @@ -2261,7 +2261,8 @@ static DECLSPEC(noreturn) void decode_error ( num=e; \ } else { \ num = 0; \ - while(e-->=0) num = (num<<8) + (GETC()+1); \ + while(e-->=0) num = ((unsigned INT64)num<<8) \ + + (GETC()+1); \ num += MAX_SMALL - 1; \ } \ if(what & TAG_NEG) { \ @@ -2367,7 +2368,7 @@ static DECLSPEC(noreturn) void decode_error ( INT32 what, e; \ INT64 num; \ DECODE("decode_number"); \ - X=(what & TAG_MASK) | ((INT32) num<<4); \ + X=(what & TAG_MASK) | ((unsigned INT64)num<<4); \ EDB(5, fprintf(stderr, "%*s ==>%ld\n", \ data->depth, "", (long) X)); \ }while(0) \ diff --git a/src/lexer.h b/src/lexer.h index b3c08481a0cdefdced85da7011e3c38b015ce795..70df5a46b1cfef58c5904d236f901e0239efa8e0 100644 --- a/src/lexer.h +++ b/src/lexer.h @@ -292,6 +292,7 @@ int parse_esc_seq (WCHAR *buf, p_wchar2 *chr, ptrdiff_t *len) case 'U': { /* FIXME: Do we need compat goo to turn this off? */ /* Note: Code dup in gobble_identifier in preprocessor.h. */ + unsigned INT32 n = 0; int stop, longq; l = 1; if (buf[1] == c) { @@ -312,23 +313,23 @@ int parse_esc_seq (WCHAR *buf, p_wchar2 *chr, ptrdiff_t *len) stop = l + 8; longq = 1; } - c = 0; for (; l < stop; l++) switch (buf[l]) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': - c = 16 * c + buf[l] - '0'; + n = 16 * n + buf[l] - '0'; break; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - c = 16 * c + buf[l] - 'a' + 10; + n = 16 * n + buf[l] - 'a' + 10; break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - c = 16 * c + buf[l] - 'A' + 10; + n = 16 * n + buf[l] - 'A' + 10; break; default: *len = l; return longq ? 8 : 7; } + c = (p_wchar2)n; } } diff --git a/src/modules/Gmp/mpz_glue.c b/src/modules/Gmp/mpz_glue.c index 078d549e5e837fe296cd64a37fbffb7f638b772d..2b26fb7f3e085a22f1f3dbc8dcd17ff182edf3e3 100644 --- a/src/modules/Gmp/mpz_glue.c +++ b/src/modules/Gmp/mpz_glue.c @@ -658,15 +658,15 @@ static INT32 crc_table[256]; static void init_crc_table(void) { - int i; + unsigned INT32 i; for (i = 0; i < 256; i++) { int j; INT32 crc = i << 24; for (j = 0; j < 8; j++) { if (crc < 0) { - crc = (crc << 1)^0x04c11db7L; + crc = (((unsigned INT32)crc) << 1)^0x04c11db7L; } else { - crc <<= 1; + crc = ((unsigned INT32)crc) << 1; } } crc_table[i] = crc; diff --git a/src/modules/Image/encodings/avs.c b/src/modules/Image/encodings/avs.c index ec89bc66cc9d5595955e3ec31c4ed7d1ea6aa11c..788db13854a31b961d7d5cded42c43ac391bdfc4 100644 --- a/src/modules/Image/encodings/avs.c +++ b/src/modules/Image/encodings/avs.c @@ -137,7 +137,7 @@ void image_avs_f_encode(INT32 args ) for(y=0; y<i->ysize; y++) for(x=0; x<i->xsize; x++) { - register int rv = 0; + register unsigned int rv = 0; rgb_group pix = *(is++); if(as) apix = *(as++); rv = ((apix.g<<24)|(pix.r<<16)|(pix.g<<8)|pix.b); diff --git a/src/modules/Image/encodings/x.c b/src/modules/Image/encodings/x.c index 5f2971b975aa6bc4a360109f89a5cb81d2a4eeec..c29774bab12fd4692056d9b05cf06d298a9f6ea6 100644 --- a/src/modules/Image/encodings/x.c +++ b/src/modules/Image/encodings/x.c @@ -605,7 +605,7 @@ static void image_x_encode_pseudocolor_1byte(INT32 args, x=img->xsize; while (x--) { - b = ((*(s++))<<(32-bpp)) & 0xffffffff; + b = (((unsigned long)*(s++))<<(32-bpp)) & 0xffffffff; bp = bpp; while (bp>8-bit) { diff --git a/src/post_modules/CritBit/inttree.cmod b/src/post_modules/CritBit/inttree.cmod index c9b004e49239084fdaa3be0e8a670e335b769d9b..f42fa97724bb71a8e50ff2e33eb3024ab988b984 100644 --- a/src/post_modules/CritBit/inttree.cmod +++ b/src/post_modules/CritBit/inttree.cmod @@ -78,8 +78,9 @@ struct pike_string * cb_ptype_from_key_ipv4(cb_key key) { unsigned INT32 ip = (unsigned INT32)key.str; - if (key.len.bits || !key.len.chars) { - ip &= (~0U) << (32 - (int)(key.len.bits - WASTED_BITS)); + if (key.len.bits && !key.len.chars) { + if (key.len.bits > WASTED_BITS) + ip &= (~0U) << (32 - (int)(key.len.bits - WASTED_BITS)); len = snprintf(buf, 19, "%u.%u.%u.%u/%u", (unsigned int)(ip>>24), (unsigned int)((ip>>16)&0xff), (unsigned int)((ip>>8)&0xff), (unsigned int)(ip&0xff), diff --git a/src/program.c b/src/program.c index 61603ae136556d131436239c491646e3ba8b416f..0b87ccab004ba065093b726ce84125b9b65a5594 100644 --- a/src/program.c +++ b/src/program.c @@ -11340,7 +11340,7 @@ PMOD_EXPORT ptrdiff_t low_get_storage(struct program *o, struct program *p) if(!o) return -1; oid=o->id; pid=p->id; - hval=oid*9248339 + pid; + hval=(unsigned)oid*9248339 + (unsigned)pid; hval%=GET_STORAGE_CACHE_SIZE; #ifdef PIKE_DEBUG if(hval>GET_STORAGE_CACHE_SIZE) @@ -11563,7 +11563,7 @@ PMOD_EXPORT int implements(struct program *a, struct program *b) if(!a || !b) return -1; if(a==b) return 1; - hval = a->id*9248339 + b->id; + hval = (unsigned)a->id*9248339 + (unsigned)b->id; hval %= IMPLEMENTS_CACHE_SIZE; #ifdef PIKE_DEBUG if(hval >= IMPLEMENTS_CACHE_SIZE) @@ -11648,7 +11648,7 @@ PMOD_EXPORT int is_compatible(struct program *a, struct program *b) bid = tmp; } - hval = aid*9248339 + bid; + hval = (unsigned long)aid*9248339 + (unsigned long)bid; hval %= IMPLEMENTS_CACHE_SIZE; #ifdef PIKE_DEBUG if(hval >= IMPLEMENTS_CACHE_SIZE) @@ -11666,7 +11666,7 @@ PMOD_EXPORT int is_compatible(struct program *a, struct program *b) /* a implements b */ return 1; } - rhval = bid*9248339 + aid; + rhval = (unsigned long)bid*9248339 + (unsigned long)aid; rhval %= IMPLEMENTS_CACHE_SIZE; #ifdef PIKE_DEBUG if(rhval >= IMPLEMENTS_CACHE_SIZE) diff --git a/src/stralloc.c b/src/stralloc.c index 951aa7673855aa69399ee02e03fa7c4d288cafdf..9b9766085bd77c0e23ba5e1016c813d518903474 100644 --- a/src/stralloc.c +++ b/src/stralloc.c @@ -2964,7 +2964,7 @@ PMOD_EXPORT void string_builder_append_integer(struct string_builder *s, else shift = delta; /* Calculate actual number of digits and initial shift. */ - for (; tmp >> shift && shift < SIZEOF_LONGEST * 8; shift += delta, len++) + for (; shift < SIZEOF_LONGEST * 8 && tmp >> shift; shift += delta, len++) ; if ((len < min_width) && !(flags & APPEND_LEFT)) {