summaryrefslogtreecommitdiff
path: root/ext/phar/phar.c
diff options
context:
space:
mode:
authorGreg Beaver <cellog@php.net>2009-02-15 20:29:26 +0000
committerGreg Beaver <cellog@php.net>2009-02-15 20:29:26 +0000
commit5b9430b5d4b7d94a55c13d6964f3ac3250411761 (patch)
tree2c0cdc97d4e0585d4c5ca071641d443b4b9ddf4e /ext/phar/phar.c
parenta249c4d77a30a3c7b77a93fc660725f02fdfcf00 (diff)
downloadphp-git-5b9430b5d4b7d94a55c13d6964f3ac3250411761.tar.gz
MFB: fix all remaining big-endian issues
Diffstat (limited to 'ext/phar/phar.c')
-rw-r--r--ext/phar/phar.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/ext/phar/phar.c b/ext/phar/phar.c
index 177ab8f32f..788648855e 100644
--- a/ext/phar/phar.c
+++ b/ext/phar/phar.c
@@ -510,12 +510,19 @@ void phar_entry_remove(phar_entry_data *idata, char **error TSRMLS_DC) /* {{{ */
var = ((((unsigned char*)(buffer))[1]) << 8) \
| (((unsigned char*)(buffer))[0]); \
(buffer) += 2
-# define PHAR_ZIP_32(buffer) ((((unsigned char*)(buffer))[3]) << 24) \
- | ((((unsigned char*)(buffer))[2]) << 16) \
- | ((((unsigned char*)(buffer))[1]) << 8) \
- | (((unsigned char*)(buffer))[0])
-# define PHAR_ZIP_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_ZIP_32(buffer) phar_fix_32((php_uint32)(buffer))
+# define PHAR_ZIP_16(buffer) phar_fix_16((php_uint16)(buffer))
#else
# define PHAR_GET_32(buffer, var) \
var = *(php_uint32*)(buffer); \