diff options
author | Anders Björklund <anders@psqr.se> | 2016-11-13 16:52:55 +0100 |
---|---|---|
committer | Joel Rosdahl <joel@rosdahl.net> | 2017-02-12 14:57:13 +0100 |
commit | 62128c135427193ba09f84508bce039231d88c67 (patch) | |
tree | 285cb6d90bdc1f04ddca58afae87deb4d3215636 | |
parent | f1ac8e7dd2f818a6d29d5f38e944cac93288ee80 (diff) | |
download | ccache-62128c135427193ba09f84508bce039231d88c67.tar.gz |
Undefined: avoid shift warning in manifest
manifest.c:264:46: runtime error: left shift of 72057594037927935 by 8 places cannot be represented in type 'long int'
-rw-r--r-- | manifest.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -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; \ } \ |