Diff for /embedaddon/php/ext/standard/pack.c between versions 1.1 and 1.1.1.5

version 1.1, 2012/02/21 23:48:02 version 1.1.1.5, 2014/06/15 20:03:57
Line 2 Line 2
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
    | PHP Version 5                                                        |     | PHP Version 5                                                        |
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
   | Copyright (c) 1997-2012 The PHP Group                                |   | Copyright (c) 1997-2014 The PHP Group                                |
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
    | This source file is subject to version 3.01 of the PHP license,      |     | This source file is subject to version 3.01 of the PHP license,      |
    | that is bundled with this package in the file LICENSE, and is        |     | that is bundled with this package in the file LICENSE, and is        |
Line 39 Line 39
 #include <sys/param.h>  #include <sys/param.h>
 #endif  #endif
 #include "ext/standard/head.h"  #include "ext/standard/head.h"
 #include "safe_mode.h"  
 #include "php_string.h"  #include "php_string.h"
 #include "pack.h"  #include "pack.h"
 #if HAVE_PWD_H  #if HAVE_PWD_H
Line 70  char machine_little_endian; Line 69  char machine_little_endian;
 /* Mapping of byte from char (8bit) to long for machine endian */  /* Mapping of byte from char (8bit) to long for machine endian */
 static int byte_map[1];  static int byte_map[1];
   
/* Mappings of bytes from int (machine dependant) to int for machine endian *//* Mappings of bytes from int (machine dependent) to int for machine endian */
 static int int_map[sizeof(int)];  static int int_map[sizeof(int)];
   
 /* Mappings of bytes from shorts (16bit) for all endian environments */  /* Mappings of bytes from shorts (16bit) for all endian environments */
Line 504  static long php_unpack(char *data, int size, int issig Line 503  static long php_unpack(char *data, int size, int issig
   
 /* unpack() is based on Perl's unpack(), but is modified a bit from there.  /* unpack() is based on Perl's unpack(), but is modified a bit from there.
  * Rather than depending on error-prone ordered lists or syntactically   * Rather than depending on error-prone ordered lists or syntactically
 * unpleasant pass-by-reference, we return an object with named paramters  * unpleasant pass-by-reference, we return an object with named parameters 
  * (like *_fetch_object()). Syntax is "f[repeat]name/...", where "f" is the   * (like *_fetch_object()). Syntax is "f[repeat]name/...", where "f" is the
  * formatter char (like pack()), "[repeat]" is the optional repeater argument,   * formatter char (like pack()), "[repeat]" is the optional repeater argument,
  * and "name" is the name of the variable to use.   * and "name" is the name of the variable to use.
Line 759  PHP_FUNCTION(unpack) Line 758  PHP_FUNCTION(unpack)
   
                                         case 'i':                                           case 'i': 
                                         case 'I': {                                          case 'I': {
                                                long v = 0;                                                long v;
                                                 int issigned = 0;                                                  int issigned = 0;
   
                                                 if (type == 'i') {                                                  if (type == 'i') {
                                                         issigned = input[inputpos + (machine_little_endian ? (sizeof(int) - 1) : 0)] & 0x80;                                                          issigned = input[inputpos + (machine_little_endian ? (sizeof(int) - 1) : 0)] & 0x80;
                                                 } else if (sizeof(long) > 4 && (input[inputpos + machine_endian_long_map[3]] & 0x80) == 0x80) {  
                                                         v = ~INT_MAX;  
                                                 }                                                  }
   
                                                v |= php_unpack(&input[inputpos], sizeof(int), issigned, int_map);                                                v = php_unpack(&input[inputpos], sizeof(int), issigned, int_map);
                                                 add_assoc_long(return_value, n, v);                                                  add_assoc_long(return_value, n, v);
                                                 break;                                                  break;
                                         }                                          }

Removed from v.1.1  
changed lines
  Added in v.1.1.1.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>