@@ -366,11 +366,9 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, zend
366366 if (Z_TYPE_P (old_data ) == IS_INDIRECT ) {
367367 old_data = Z_INDIRECT_P (old_data );
368368 }
369- zval_ptr_dtor (old_data );
370369 var_push_dtor (var_hash , old_data );
371- ZVAL_UNDEF (old_data );
372370 }
373- data = zend_hash_update (ht , Z_STR (key ), & d );
371+ data = zend_hash_update_ind (ht , Z_STR (key ), & d );
374372 }
375373
376374 zval_dtor (& key );
@@ -509,7 +507,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
509507 start = cursor ;
510508
511509
512- #line 513 "ext/standard/var_unserializer.c"
510+ #line 511 "ext/standard/var_unserializer.c"
513511{
514512 YYCTYPE yych ;
515513 static const unsigned char yybm [] = {
@@ -569,9 +567,9 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
569567 yych = * (YYMARKER = ++ YYCURSOR );
570568 if (yych == ':' ) goto yy95 ;
571569yy3 :
572- #line 860 "ext/standard/var_unserializer.re"
570+ #line 858 "ext/standard/var_unserializer.re"
573571 { return 0 ; }
574- #line 575 "ext/standard/var_unserializer.c"
572+ #line 573 "ext/standard/var_unserializer.c"
575573yy4 :
576574 yych = * (YYMARKER = ++ YYCURSOR );
577575 if (yych == ':' ) goto yy89 ;
@@ -614,13 +612,13 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
614612 goto yy3 ;
615613yy14 :
616614 ++ YYCURSOR ;
617- #line 854 "ext/standard/var_unserializer.re"
615+ #line 852 "ext/standard/var_unserializer.re"
618616 {
619617 /* this is the case where we have less data than planned */
620618 php_error_docref (NULL TSRMLS_CC , E_NOTICE , "Unexpected end of serialized data" );
621619 return 0 ; /* not sure if it should be 0 or 1 here? */
622620}
623- #line 624 "ext/standard/var_unserializer.c"
621+ #line 622 "ext/standard/var_unserializer.c"
624622yy16 :
625623 yych = * ++ YYCURSOR ;
626624 goto yy3 ;
@@ -651,7 +649,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
651649 yych = * ++ YYCURSOR ;
652650 if (yych != '"' ) goto yy18 ;
653651 ++ YYCURSOR ;
654- #line 709 "ext/standard/var_unserializer.re"
652+ #line 707 "ext/standard/var_unserializer.re"
655653 {
656654 size_t len , len2 , len3 , maxlen ;
657655 zend_long elements ;
@@ -796,7 +794,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
796794
797795 return object_common2 (UNSERIALIZE_PASSTHRU , elements );
798796}
799- #line 800 "ext/standard/var_unserializer.c"
797+ #line 798 "ext/standard/var_unserializer.c"
800798yy25 :
801799 yych = * ++ YYCURSOR ;
802800 if (yych <= ',' ) {
@@ -821,15 +819,15 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
821819 yych = * ++ YYCURSOR ;
822820 if (yych != '"' ) goto yy18 ;
823821 ++ YYCURSOR ;
824- #line 701 "ext/standard/var_unserializer.re"
822+ #line 699 "ext/standard/var_unserializer.re"
825823 {
826824
827825//??? INIT_PZVAL(rval);
828826
829827 return object_common2 (UNSERIALIZE_PASSTHRU ,
830828 object_common1 (UNSERIALIZE_PASSTHRU , ZEND_STANDARD_CLASS_DEF_PTR ));
831829}
832- #line 833 "ext/standard/var_unserializer.c"
830+ #line 831 "ext/standard/var_unserializer.c"
833831yy32 :
834832 yych = * ++ YYCURSOR ;
835833 if (yych == '+' ) goto yy33 ;
@@ -850,7 +848,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
850848 yych = * ++ YYCURSOR ;
851849 if (yych != '{' ) goto yy18 ;
852850 ++ YYCURSOR ;
853- #line 680 "ext/standard/var_unserializer.re"
851+ #line 678 "ext/standard/var_unserializer.re"
854852 {
855853 zend_long elements = parse_iv (start + 2 );
856854 /* use iv() not uiv() in order to check data range */
@@ -871,7 +869,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
871869
872870 return finish_nested_data (UNSERIALIZE_PASSTHRU );
873871}
874- #line 875 "ext/standard/var_unserializer.c"
872+ #line 873 "ext/standard/var_unserializer.c"
875873yy39 :
876874 yych = * ++ YYCURSOR ;
877875 if (yych == '+' ) goto yy40 ;
@@ -892,7 +890,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
892890 yych = * ++ YYCURSOR ;
893891 if (yych != '"' ) goto yy18 ;
894892 ++ YYCURSOR ;
895- #line 652 "ext/standard/var_unserializer.re"
893+ #line 650 "ext/standard/var_unserializer.re"
896894 {
897895 size_t len , maxlen ;
898896 zend_string * str ;
@@ -920,7 +918,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
920918 ZVAL_STR (rval , str );
921919 return 1 ;
922920}
923- #line 924 "ext/standard/var_unserializer.c"
921+ #line 922 "ext/standard/var_unserializer.c"
924922yy46 :
925923 yych = * ++ YYCURSOR ;
926924 if (yych == '+' ) goto yy47 ;
@@ -941,7 +939,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
941939 yych = * ++ YYCURSOR ;
942940 if (yych != '"' ) goto yy18 ;
943941 ++ YYCURSOR ;
944- #line 625 "ext/standard/var_unserializer.re"
942+ #line 623 "ext/standard/var_unserializer.re"
945943 {
946944 size_t len , maxlen ;
947945 char * str ;
@@ -968,7 +966,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
968966 ZVAL_STRINGL (rval , str , len );
969967 return 1 ;
970968}
971- #line 972 "ext/standard/var_unserializer.c"
969+ #line 970 "ext/standard/var_unserializer.c"
972970yy53 :
973971 yych = * ++ YYCURSOR ;
974972 if (yych <= '/' ) {
@@ -1056,7 +1054,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
10561054 }
10571055yy63 :
10581056 ++ YYCURSOR ;
1059- #line 616 "ext/standard/var_unserializer.re"
1057+ #line 614 "ext/standard/var_unserializer.re"
10601058 {
10611059#if SIZEOF_ZEND_LONG == 4
10621060use_double :
@@ -1065,7 +1063,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
10651063 ZVAL_DOUBLE (rval , zend_strtod ((const char * )start + 2 , NULL ));
10661064 return 1 ;
10671065}
1068- #line 1069 "ext/standard/var_unserializer.c"
1066+ #line 1067 "ext/standard/var_unserializer.c"
10691067yy65 :
10701068 yych = * ++ YYCURSOR ;
10711069 if (yych <= ',' ) {
@@ -1124,7 +1122,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
11241122 yych = * ++ YYCURSOR ;
11251123 if (yych != ';' ) goto yy18 ;
11261124 ++ YYCURSOR ;
1127- #line 600 "ext/standard/var_unserializer.re"
1125+ #line 598 "ext/standard/var_unserializer.re"
11281126 {
11291127 * p = YYCURSOR ;
11301128
@@ -1140,7 +1138,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
11401138
11411139 return 1 ;
11421140}
1143- #line 1144 "ext/standard/var_unserializer.c"
1141+ #line 1142 "ext/standard/var_unserializer.c"
11441142yy76 :
11451143 yych = * ++ YYCURSOR ;
11461144 if (yych == 'N' ) goto yy73 ;
@@ -1167,7 +1165,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
11671165 if (yych <= '9' ) goto yy79 ;
11681166 if (yych != ';' ) goto yy18 ;
11691167 ++ YYCURSOR ;
1170- #line 574 "ext/standard/var_unserializer.re"
1168+ #line 572 "ext/standard/var_unserializer.re"
11711169 {
11721170#if SIZEOF_ZEND_LONG == 4
11731171 int digits = YYCURSOR - start - 3 ;
@@ -1193,30 +1191,30 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
11931191 ZVAL_LONG (rval , parse_iv (start + 2 ));
11941192 return 1 ;
11951193}
1196- #line 1197 "ext/standard/var_unserializer.c"
1194+ #line 1195 "ext/standard/var_unserializer.c"
11971195yy83 :
11981196 yych = * ++ YYCURSOR ;
11991197 if (yych <= '/' ) goto yy18 ;
12001198 if (yych >= '2' ) goto yy18 ;
12011199 yych = * ++ YYCURSOR ;
12021200 if (yych != ';' ) goto yy18 ;
12031201 ++ YYCURSOR ;
1204- #line 568 "ext/standard/var_unserializer.re"
1202+ #line 566 "ext/standard/var_unserializer.re"
12051203 {
12061204 * p = YYCURSOR ;
12071205 ZVAL_BOOL (rval , parse_iv (start + 2 ));
12081206 return 1 ;
12091207}
1210- #line 1211 "ext/standard/var_unserializer.c"
1208+ #line 1209 "ext/standard/var_unserializer.c"
12111209yy87 :
12121210 ++ YYCURSOR ;
1213- #line 562 "ext/standard/var_unserializer.re"
1211+ #line 560 "ext/standard/var_unserializer.re"
12141212 {
12151213 * p = YYCURSOR ;
12161214 ZVAL_NULL (rval );
12171215 return 1 ;
12181216}
1219- #line 1220 "ext/standard/var_unserializer.c"
1217+ #line 1218 "ext/standard/var_unserializer.c"
12201218yy89 :
12211219 yych = * ++ YYCURSOR ;
12221220 if (yych <= ',' ) {
@@ -1239,7 +1237,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
12391237 if (yych <= '9' ) goto yy91 ;
12401238 if (yych != ';' ) goto yy18 ;
12411239 ++ YYCURSOR ;
1242- #line 539 "ext/standard/var_unserializer.re"
1240+ #line 537 "ext/standard/var_unserializer.re"
12431241 {
12441242 zend_long id ;
12451243
@@ -1262,7 +1260,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
12621260
12631261 return 1 ;
12641262}
1265- #line 1266 "ext/standard/var_unserializer.c"
1263+ #line 1264 "ext/standard/var_unserializer.c"
12661264yy95 :
12671265 yych = * ++ YYCURSOR ;
12681266 if (yych <= ',' ) {
@@ -1285,7 +1283,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
12851283 if (yych <= '9' ) goto yy97 ;
12861284 if (yych != ';' ) goto yy18 ;
12871285 ++ YYCURSOR ;
1288- #line 517 "ext/standard/var_unserializer.re"
1286+ #line 515 "ext/standard/var_unserializer.re"
12891287 {
12901288 zend_long id ;
12911289
@@ -1307,9 +1305,9 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
13071305
13081306 return 1 ;
13091307}
1310- #line 1311 "ext/standard/var_unserializer.c"
1308+ #line 1309 "ext/standard/var_unserializer.c"
13111309}
1312- #line 862 "ext/standard/var_unserializer.re"
1310+ #line 860 "ext/standard/var_unserializer.re"
13131311
13141312
13151313 return 0 ;
0 commit comments