Browse code

Proposed fix to warnings on big endian AIX builds that may have been indicative of truncated readint64 return values.

Micah Snyder (micasnyd) authored on 2018/04/27 11:16:23
Showing 1 changed files
... ...
@@ -579,36 +579,36 @@ struct unaligned_ptr {
579 579
     #define be32_to_host(v)	(v)
580 580
     #define be64_to_host(v)	(v)
581 581
 
582
-    static inline int32_t cli_readint64(const void *buff)
582
+    static inline int64_t cli_readint64(const void *buff)
583 583
     {
584 584
         int64_t ret;
585
-        ret = ((const char *)buff)[0] & 0xff;
586
-        ret |= (((const char *)buff)[1] & 0xff) << 8;
587
-        ret |= (((const char *)buff)[2] & 0xff) << 16;
588
-        ret |= (((const char *)buff)[3] & 0xff) << 24;
589
-
590
-        ret |= (((const char *)buff)[4] & 0xff) << 32;
591
-        ret |= (((const char *)buff)[5] & 0xff) << 40;
592
-        ret |= (((const char *)buff)[6] & 0xff) << 48;
593
-        ret |= (((const char *)buff)[7] & 0xff) << 56;
585
+        ret = (int64_t)((const char *)buff)[0] & 0xff;
586
+        ret |= (int64_t)(((const char *)buff)[1] & 0xff) << 8;
587
+        ret |= (int64_t)(((const char *)buff)[2] & 0xff) << 16;
588
+        ret |= (int64_t)(((const char *)buff)[3] & 0xff) << 24;
589
+
590
+        ret |= (int64_t)(((const char *)buff)[4] & 0xff) << 32;
591
+        ret |= (int64_t)(((const char *)buff)[5] & 0xff) << 40;
592
+        ret |= (int64_t)(((const char *)buff)[6] & 0xff) << 48;
593
+        ret |= (int64_t)(((const char *)buff)[7] & 0xff) << 56;
594 594
         return ret;
595 595
     }
596 596
 
597 597
     static inline int32_t cli_readint32(const void *buff)
598 598
     {
599 599
         int32_t ret;
600
-        ret = ((const char *)buff)[0] & 0xff;
601
-        ret |= (((const char *)buff)[1] & 0xff) << 8;
602
-        ret |= (((const char *)buff)[2] & 0xff) << 16;
603
-        ret |= (((const char *)buff)[3] & 0xff) << 24;
600
+        ret = (int32_t)((const char *)buff)[0] & 0xff;
601
+        ret |= (int32_t)(((const char *)buff)[1] & 0xff) << 8;
602
+        ret |= (int32_t)(((const char *)buff)[2] & 0xff) << 16;
603
+        ret |= (int32_t)(((const char *)buff)[3] & 0xff) << 24;
604 604
         return ret;
605 605
     }
606 606
 
607 607
     static inline int16_t cli_readint16(const void *buff)
608 608
     {
609 609
         int16_t ret;
610
-        ret = ((const char *)buff)[0] & 0xff;
611
-        ret |= (((const char *)buff)[1] & 0xff) << 8;
610
+        ret = (int16_t)((const char *)buff)[0] & 0xff;
611
+        ret |= (int16_t)(((const char *)buff)[1] & 0xff) << 8;
612 612
         return ret;
613 613
     }
614 614