com php-src: Merge branch 'PHP-5.6': ext/standard/pack.c

From: Date: Thu, 09 Oct 2014 23:05:36 +0000
Subject: com php-src: Merge branch 'PHP-5.6': ext/standard/pack.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-82232@lists.php.net to get a copy of this message
Commit: 284358b317d3066be12552bdc0ab7e0c032f6e29 Author: Tjerk Meesters <datibbaw@php.net> Fri, 10 Oct 2014 07:05:36 +0800 Parents: 2c434470a6d9ea1dbab744da0b5269bb649d2ee2 30f8a9bafff21410aa849447eb386be7a98526d6 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=284358b317d3066be12552bdc0ab7e0c032f6e29 Log: Merge branch 'PHP-5.6' * PHP-5.6: Add 64 bit formats to pack() and unpack() Changed paths: MM ext/standard/pack.c Diff: diff --cc ext/standard/pack.c index f2bcb09,9427db9..a690b7b --- a/ext/standard/pack.c +++ b/ext/standard/pack.c @@@ -82,9 -82,16 +82,16 @@@ static int machine_endian_long_map[4] static int big_endian_long_map[4]; static int little_endian_long_map[4]; + #if SIZEOF_LONG > 4 + /* Mappings of bytes from quads (64bit) for all endian environments */ + static int machine_endian_longlong_map[8]; + static int big_endian_longlong_map[8]; + static int little_endian_longlong_map[8]; + #endif + /* {{{ php_pack */ -static void php_pack(zval **val, int size, int *map, char *output) +static void php_pack(zval *val, size_t size, int *map, char *output) { int i; char *v; @@@ -430,9 -464,34 +457,30 @@@ PHP_FUNCTION(pack break; } + #if SIZEOF_LONG > 4 + case 'q': + case 'Q': + case 'J': + case 'P': { + int *map = machine_endian_longlong_map; + + if (code == 'J') { + map = big_endian_longlong_map; + } else if (code == 'P') { + map = little_endian_longlong_map; + } + + while (arg-- > 0) { + php_pack(argv[currentarg++], 8, map, &output[outputpos]); + outputpos += 8; + } + break; + } + #endif + case 'f': { - float v; - while (arg-- > 0) { - val = argv[currentarg++]; - convert_to_double_ex(val); - v = (float) Z_DVAL_PP(val); + float v = (float) zval_get_double(&argv[currentarg++]); memcpy(&output[outputpos], &v, sizeof(v)); outputpos += sizeof(v); }

« previous php.cvs (#82232) next »