]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Undefined: avoid shift warning in manifest
authorAnders Björklund <anders@psqr.se>
Sun, 13 Nov 2016 15:52:55 +0000 (16:52 +0100)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 12 Feb 2017 13:57:13 +0000 (14:57 +0100)
manifest.c:264:46: runtime error: left shift of 72057594037927935 by 8 places cannot be represented in type 'long int'

manifest.c

index 28ee35d5d65c56b9d245fb8a1d22dba8cf79dee0..7c019e18395502e1f99ed222206653745b06fb73 100644 (file)
@@ -165,15 +165,16 @@ free_manifest(struct manifest *mf)
 
 #define READ_INT(size, var) \
   do { \
-               (var) = 0; \
+               uint64_t u_ = 0; \
                for (size_t i_ = 0; i_ < (size); i_++) { \
                        int ch_ = gzgetc(f); \
                        if (ch_ == EOF) { \
                                goto error; \
                        } \
-                       (var) <<= 8; \
-                       (var) |= ch_ & 0xFF; \
+                       u_ <<= 8; \
+                       u_ |= ch_ & 0xFF; \
                } \
+               (var) = u_; \
        } while (false)
 
 #define READ_STR(var) \
@@ -289,10 +290,11 @@ error:
 
 #define WRITE_INT(size, var) \
   do { \
+               uint64_t u_ = (var); \
                uint8_t ch_; \
                size_t i_; \
                for (i_ = 0; i_ < (size); i_++) { \
-                       ch_ = ((var) >> (8 * ((size) - i_ - 1))); \
+                       ch_ = (u_ >> (8 * ((size) - i_ - 1))); \
                        if (gzputc(f, ch_) == EOF) { \
                                goto error; \
                        } \