cellog          Sun Feb 15 19:23:06 2009 UTC

  Modified files:              
    /php-src/ext/phar   zip.c 
  Log:
  MFB: fix getting/setting of all 16/32 bit on zip
  
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/zip.c?r1=1.60&r2=1.61&diff_format=u
Index: php-src/ext/phar/zip.c
diff -u php-src/ext/phar/zip.c:1.60 php-src/ext/phar/zip.c:1.61
--- php-src/ext/phar/zip.c:1.60 Wed Dec 31 11:12:35 2008
+++ php-src/ext/phar/zip.c      Sun Feb 15 19:23:06 2009
@@ -19,12 +19,19 @@
 #include "phar_internal.h"
 
 #ifdef WORDS_BIGENDIAN
-# define PHAR_GET_32(buffer) (((((unsigned char*)(buffer))[3]) << 24) \
-               | ((((unsigned char*)(buffer))[2]) << 16) \
-               | ((((unsigned char*)(buffer))[1]) <<  8) \
-               | (((unsigned char*)(buffer))[0]))
-# define PHAR_GET_16(buffer) (((((unsigned char*)(buffer))[1]) <<  8) \
-               | (((unsigned char*)(buffer))[0]))
+static inline php_uint32 phar_fix_32(php_uint32 buffer)
+{
+       return ((((unsigned char *)&buffer)[3]) << 24) |
+               ((((unsigned char *)&buffer)[2]) << 16) |
+               ((((unsigned char *)&buffer)[1]) << 8) |
+               (((unsigned char *)&buffer)[0]);
+}
+static inline php_uint16 phar_fix_16(php_uint16 buffer)
+{
+       return ((((unsigned char *)&buffer)[1]) << 8) | ((unsigned char 
*)&buffer)[0];
+}
+# define PHAR_GET_32(buffer) phar_fix_32((php_uint32)(buffer))
+# define PHAR_GET_16(buffer) phar_fix_16((php_uint16)(buffer))
 # define PHAR_SET_32(buffer) PHAR_GET_32(buffer)
 # define PHAR_SET_16(buffer) PHAR_GET_16(buffer)
 #else



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to