sgetl: sometimes C typing is perverse
authorAlan Cox <alan@linux.intel.com>
Thu, 5 Oct 2017 23:07:51 +0000 (00:07 +0100)
committerAlan Cox <alan@linux.intel.com>
Thu, 5 Oct 2017 23:07:51 +0000 (00:07 +0100)
Library/libs/sgetl.c

index a9408cc..2b9080a 100644 (file)
@@ -7,9 +7,9 @@ long sgetl(const char *buffer)
     uint32_t r;
     
     r = *p++;
-    r |= (*p++ << 8);
-    r |= (*p++ << 16);
-    r |= (*p << 24);
+    r |= (((uint16_t)*p++) << 8);
+    r |= (((uint32_t)*p++) << 16);
+    r |= (((uint32_t)*p) << 24);
     
     return (long)r;
 }