@@ -366,11 +366,9 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, zend
366
366
if (Z_TYPE_P (old_data ) == IS_INDIRECT ) {
367
367
old_data = Z_INDIRECT_P (old_data );
368
368
}
369
- zval_ptr_dtor (old_data );
370
369
var_push_dtor (var_hash , old_data );
371
- ZVAL_UNDEF (old_data );
372
370
}
373
- data = zend_hash_update (ht , Z_STR (key ), & d );
371
+ data = zend_hash_update_ind (ht , Z_STR (key ), & d );
374
372
}
375
373
376
374
zval_dtor (& key );
@@ -509,7 +507,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
509
507
start = cursor ;
510
508
511
509
512
- #line 513 "ext/standard/var_unserializer.c"
510
+ #line 511 "ext/standard/var_unserializer.c"
513
511
{
514
512
YYCTYPE yych ;
515
513
static const unsigned char yybm [] = {
@@ -569,9 +567,9 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
569
567
yych = * (YYMARKER = ++ YYCURSOR );
570
568
if (yych == ':' ) goto yy95 ;
571
569
yy3 :
572
- #line 860 "ext/standard/var_unserializer.re"
570
+ #line 858 "ext/standard/var_unserializer.re"
573
571
{ return 0 ; }
574
- #line 575 "ext/standard/var_unserializer.c"
572
+ #line 573 "ext/standard/var_unserializer.c"
575
573
yy4 :
576
574
yych = * (YYMARKER = ++ YYCURSOR );
577
575
if (yych == ':' ) goto yy89 ;
@@ -614,13 +612,13 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
614
612
goto yy3 ;
615
613
yy14 :
616
614
++ YYCURSOR ;
617
- #line 854 "ext/standard/var_unserializer.re"
615
+ #line 852 "ext/standard/var_unserializer.re"
618
616
{
619
617
/* this is the case where we have less data than planned */
620
618
php_error_docref (NULL TSRMLS_CC , E_NOTICE , "Unexpected end of serialized data" );
621
619
return 0 ; /* not sure if it should be 0 or 1 here? */
622
620
}
623
- #line 624 "ext/standard/var_unserializer.c"
621
+ #line 622 "ext/standard/var_unserializer.c"
624
622
yy16 :
625
623
yych = * ++ YYCURSOR ;
626
624
goto yy3 ;
@@ -651,7 +649,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
651
649
yych = * ++ YYCURSOR ;
652
650
if (yych != '"' ) goto yy18 ;
653
651
++ YYCURSOR ;
654
- #line 709 "ext/standard/var_unserializer.re"
652
+ #line 707 "ext/standard/var_unserializer.re"
655
653
{
656
654
size_t len , len2 , len3 , maxlen ;
657
655
zend_long elements ;
@@ -796,7 +794,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
796
794
797
795
return object_common2 (UNSERIALIZE_PASSTHRU , elements );
798
796
}
799
- #line 800 "ext/standard/var_unserializer.c"
797
+ #line 798 "ext/standard/var_unserializer.c"
800
798
yy25 :
801
799
yych = * ++ YYCURSOR ;
802
800
if (yych <= ',' ) {
@@ -821,15 +819,15 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
821
819
yych = * ++ YYCURSOR ;
822
820
if (yych != '"' ) goto yy18 ;
823
821
++ YYCURSOR ;
824
- #line 701 "ext/standard/var_unserializer.re"
822
+ #line 699 "ext/standard/var_unserializer.re"
825
823
{
826
824
827
825
//??? INIT_PZVAL(rval);
828
826
829
827
return object_common2 (UNSERIALIZE_PASSTHRU ,
830
828
object_common1 (UNSERIALIZE_PASSTHRU , ZEND_STANDARD_CLASS_DEF_PTR ));
831
829
}
832
- #line 833 "ext/standard/var_unserializer.c"
830
+ #line 831 "ext/standard/var_unserializer.c"
833
831
yy32 :
834
832
yych = * ++ YYCURSOR ;
835
833
if (yych == '+' ) goto yy33 ;
@@ -850,7 +848,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
850
848
yych = * ++ YYCURSOR ;
851
849
if (yych != '{' ) goto yy18 ;
852
850
++ YYCURSOR ;
853
- #line 680 "ext/standard/var_unserializer.re"
851
+ #line 678 "ext/standard/var_unserializer.re"
854
852
{
855
853
zend_long elements = parse_iv (start + 2 );
856
854
/* use iv() not uiv() in order to check data range */
@@ -871,7 +869,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
871
869
872
870
return finish_nested_data (UNSERIALIZE_PASSTHRU );
873
871
}
874
- #line 875 "ext/standard/var_unserializer.c"
872
+ #line 873 "ext/standard/var_unserializer.c"
875
873
yy39 :
876
874
yych = * ++ YYCURSOR ;
877
875
if (yych == '+' ) goto yy40 ;
@@ -892,7 +890,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
892
890
yych = * ++ YYCURSOR ;
893
891
if (yych != '"' ) goto yy18 ;
894
892
++ YYCURSOR ;
895
- #line 652 "ext/standard/var_unserializer.re"
893
+ #line 650 "ext/standard/var_unserializer.re"
896
894
{
897
895
size_t len , maxlen ;
898
896
zend_string * str ;
@@ -920,7 +918,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
920
918
ZVAL_STR (rval , str );
921
919
return 1 ;
922
920
}
923
- #line 924 "ext/standard/var_unserializer.c"
921
+ #line 922 "ext/standard/var_unserializer.c"
924
922
yy46 :
925
923
yych = * ++ YYCURSOR ;
926
924
if (yych == '+' ) goto yy47 ;
@@ -941,7 +939,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
941
939
yych = * ++ YYCURSOR ;
942
940
if (yych != '"' ) goto yy18 ;
943
941
++ YYCURSOR ;
944
- #line 625 "ext/standard/var_unserializer.re"
942
+ #line 623 "ext/standard/var_unserializer.re"
945
943
{
946
944
size_t len , maxlen ;
947
945
char * str ;
@@ -968,7 +966,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
968
966
ZVAL_STRINGL (rval , str , len );
969
967
return 1 ;
970
968
}
971
- #line 972 "ext/standard/var_unserializer.c"
969
+ #line 970 "ext/standard/var_unserializer.c"
972
970
yy53 :
973
971
yych = * ++ YYCURSOR ;
974
972
if (yych <= '/' ) {
@@ -1056,7 +1054,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
1056
1054
}
1057
1055
yy63 :
1058
1056
++ YYCURSOR ;
1059
- #line 616 "ext/standard/var_unserializer.re"
1057
+ #line 614 "ext/standard/var_unserializer.re"
1060
1058
{
1061
1059
#if SIZEOF_ZEND_LONG == 4
1062
1060
use_double :
@@ -1065,7 +1063,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
1065
1063
ZVAL_DOUBLE (rval , zend_strtod ((const char * )start + 2 , NULL ));
1066
1064
return 1 ;
1067
1065
}
1068
- #line 1069 "ext/standard/var_unserializer.c"
1066
+ #line 1067 "ext/standard/var_unserializer.c"
1069
1067
yy65 :
1070
1068
yych = * ++ YYCURSOR ;
1071
1069
if (yych <= ',' ) {
@@ -1124,7 +1122,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
1124
1122
yych = * ++ YYCURSOR ;
1125
1123
if (yych != ';' ) goto yy18 ;
1126
1124
++ YYCURSOR ;
1127
- #line 600 "ext/standard/var_unserializer.re"
1125
+ #line 598 "ext/standard/var_unserializer.re"
1128
1126
{
1129
1127
* p = YYCURSOR ;
1130
1128
@@ -1140,7 +1138,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
1140
1138
1141
1139
return 1 ;
1142
1140
}
1143
- #line 1144 "ext/standard/var_unserializer.c"
1141
+ #line 1142 "ext/standard/var_unserializer.c"
1144
1142
yy76 :
1145
1143
yych = * ++ YYCURSOR ;
1146
1144
if (yych == 'N' ) goto yy73 ;
@@ -1167,7 +1165,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
1167
1165
if (yych <= '9' ) goto yy79 ;
1168
1166
if (yych != ';' ) goto yy18 ;
1169
1167
++ YYCURSOR ;
1170
- #line 574 "ext/standard/var_unserializer.re"
1168
+ #line 572 "ext/standard/var_unserializer.re"
1171
1169
{
1172
1170
#if SIZEOF_ZEND_LONG == 4
1173
1171
int digits = YYCURSOR - start - 3 ;
@@ -1193,30 +1191,30 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
1193
1191
ZVAL_LONG (rval , parse_iv (start + 2 ));
1194
1192
return 1 ;
1195
1193
}
1196
- #line 1197 "ext/standard/var_unserializer.c"
1194
+ #line 1195 "ext/standard/var_unserializer.c"
1197
1195
yy83 :
1198
1196
yych = * ++ YYCURSOR ;
1199
1197
if (yych <= '/' ) goto yy18 ;
1200
1198
if (yych >= '2' ) goto yy18 ;
1201
1199
yych = * ++ YYCURSOR ;
1202
1200
if (yych != ';' ) goto yy18 ;
1203
1201
++ YYCURSOR ;
1204
- #line 568 "ext/standard/var_unserializer.re"
1202
+ #line 566 "ext/standard/var_unserializer.re"
1205
1203
{
1206
1204
* p = YYCURSOR ;
1207
1205
ZVAL_BOOL (rval , parse_iv (start + 2 ));
1208
1206
return 1 ;
1209
1207
}
1210
- #line 1211 "ext/standard/var_unserializer.c"
1208
+ #line 1209 "ext/standard/var_unserializer.c"
1211
1209
yy87 :
1212
1210
++ YYCURSOR ;
1213
- #line 562 "ext/standard/var_unserializer.re"
1211
+ #line 560 "ext/standard/var_unserializer.re"
1214
1212
{
1215
1213
* p = YYCURSOR ;
1216
1214
ZVAL_NULL (rval );
1217
1215
return 1 ;
1218
1216
}
1219
- #line 1220 "ext/standard/var_unserializer.c"
1217
+ #line 1218 "ext/standard/var_unserializer.c"
1220
1218
yy89 :
1221
1219
yych = * ++ YYCURSOR ;
1222
1220
if (yych <= ',' ) {
@@ -1239,7 +1237,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
1239
1237
if (yych <= '9' ) goto yy91 ;
1240
1238
if (yych != ';' ) goto yy18 ;
1241
1239
++ YYCURSOR ;
1242
- #line 539 "ext/standard/var_unserializer.re"
1240
+ #line 537 "ext/standard/var_unserializer.re"
1243
1241
{
1244
1242
zend_long id ;
1245
1243
@@ -1262,7 +1260,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
1262
1260
1263
1261
return 1 ;
1264
1262
}
1265
- #line 1266 "ext/standard/var_unserializer.c"
1263
+ #line 1264 "ext/standard/var_unserializer.c"
1266
1264
yy95 :
1267
1265
yych = * ++ YYCURSOR ;
1268
1266
if (yych <= ',' ) {
@@ -1285,7 +1283,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
1285
1283
if (yych <= '9' ) goto yy97 ;
1286
1284
if (yych != ';' ) goto yy18 ;
1287
1285
++ YYCURSOR ;
1288
- #line 517 "ext/standard/var_unserializer.re"
1286
+ #line 515 "ext/standard/var_unserializer.re"
1289
1287
{
1290
1288
zend_long id ;
1291
1289
@@ -1307,9 +1305,9 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER)
1307
1305
1308
1306
return 1 ;
1309
1307
}
1310
- #line 1311 "ext/standard/var_unserializer.c"
1308
+ #line 1309 "ext/standard/var_unserializer.c"
1311
1309
}
1312
- #line 862 "ext/standard/var_unserializer.re"
1310
+ #line 860 "ext/standard/var_unserializer.re"
1313
1311
1314
1312
1315
1313
return 0 ;
0 commit comments