]> granicus.if.org Git - php/commitdiff
MFB: fix setting of 32-bit values on big-endian systems
authorGreg Beaver <cellog@php.net>
Sun, 15 Feb 2009 18:52:11 +0000 (18:52 +0000)
committerGreg Beaver <cellog@php.net>
Sun, 15 Feb 2009 18:52:11 +0000 (18:52 +0000)
ext/phar/tar.c

index 8a53989766a9131fa8df1388aaba0b740f4ed2d9..84789b1411806f3a96d7ff18465fe8e2b540d21e 100644 (file)
@@ -1084,10 +1084,10 @@ nostub:
 
 #ifdef WORDS_BIGENDIAN
 # define PHAR_SET_32(var, buffer) \
-       *(php_uint32 *)(var) = (((((unsigned char*)(buffer))[3]) << 24) \
-               | ((((unsigned char*)(buffer))[2]) << 16) \
-               | ((((unsigned char*)(buffer))[1]) << 8) \
-               | (((unsigned char*)(buffer))[0]))
+       *(php_uint32 *)(var) = (((((unsigned char*)&(buffer))[3]) << 24) \
+               | ((((unsigned char*)&(buffer))[2]) << 16) \
+               | ((((unsigned char*)&(buffer))[1]) << 8) \
+               | (((unsigned char*)&(buffer))[0]))
 #else
 # define PHAR_SET_32(var, buffer) *(php_uint32 *)(var) = (php_uint32) (buffer)
 #endif