1
- /* Generated by re2c 0.13.5 */
1
+ /* Generated by re2c 0.13.7. 5 */
2
2
#line 1 "ext/standard/var_unserializer.re"
3
3
/*
4
4
+----------------------------------------------------------------------+
@@ -342,6 +342,9 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long
342
342
} else {
343
343
/* object properties should include no integers */
344
344
convert_to_string (key );
345
+ if (zend_symtable_find (ht , Z_STRVAL_P (key ), Z_STRLEN_P (key ) + 1 , (void * * )& old_data )== SUCCESS ) {
346
+ var_push_dtor (var_hash , old_data );
347
+ }
345
348
zend_hash_update (ht , Z_STRVAL_P (key ), Z_STRLEN_P (key ) + 1 , & data ,
346
349
sizeof data , NULL );
347
350
}
@@ -475,7 +478,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
475
478
476
479
477
480
478
- #line 479 "ext/standard/var_unserializer.c"
481
+ #line 482 "ext/standard/var_unserializer.c"
479
482
{
480
483
YYCTYPE yych ;
481
484
static const unsigned char yybm [] = {
@@ -535,9 +538,9 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
535
538
yych = * (YYMARKER = ++ YYCURSOR );
536
539
if (yych == ':' ) goto yy95 ;
537
540
yy3 :
538
- #line 830 "ext/standard/var_unserializer.re"
541
+ #line 833 "ext/standard/var_unserializer.re"
539
542
{ return 0 ; }
540
- #line 541 "ext/standard/var_unserializer.c"
543
+ #line 544 "ext/standard/var_unserializer.c"
541
544
yy4 :
542
545
yych = * (YYMARKER = ++ YYCURSOR );
543
546
if (yych == ':' ) goto yy89 ;
@@ -580,13 +583,13 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
580
583
goto yy3 ;
581
584
yy14 :
582
585
++ YYCURSOR ;
583
- #line 824 "ext/standard/var_unserializer.re"
586
+ #line 827 "ext/standard/var_unserializer.re"
584
587
{
585
588
/* this is the case where we have less data than planned */
586
589
php_error_docref (NULL TSRMLS_CC , E_NOTICE , "Unexpected end of serialized data" );
587
590
return 0 ; /* not sure if it should be 0 or 1 here? */
588
591
}
589
- #line 590 "ext/standard/var_unserializer.c"
592
+ #line 593 "ext/standard/var_unserializer.c"
590
593
yy16 :
591
594
yych = * ++ YYCURSOR ;
592
595
goto yy3 ;
@@ -612,11 +615,12 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
612
615
if (yybm [0 + yych ] & 128 ) {
613
616
goto yy20 ;
614
617
}
615
- if (yych != ':' ) goto yy18 ;
618
+ if (yych <= '/' ) goto yy18 ;
619
+ if (yych >= ';' ) goto yy18 ;
616
620
yych = * ++ YYCURSOR ;
617
621
if (yych != '"' ) goto yy18 ;
618
622
++ YYCURSOR ;
619
- #line 678 "ext/standard/var_unserializer.re"
623
+ #line 681 "ext/standard/var_unserializer.re"
620
624
{
621
625
size_t len , len2 , len3 , maxlen ;
622
626
long elements ;
@@ -762,7 +766,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
762
766
763
767
return object_common2 (UNSERIALIZE_PASSTHRU , elements );
764
768
}
765
- #line 766 "ext/standard/var_unserializer.c"
769
+ #line 770 "ext/standard/var_unserializer.c"
766
770
yy25 :
767
771
yych = * ++ YYCURSOR ;
768
772
if (yych <= ',' ) {
@@ -787,15 +791,15 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
787
791
yych = * ++ YYCURSOR ;
788
792
if (yych != '"' ) goto yy18 ;
789
793
++ YYCURSOR ;
790
- #line 670 "ext/standard/var_unserializer.re"
794
+ #line 673 "ext/standard/var_unserializer.re"
791
795
{
792
796
793
797
INIT_PZVAL (* rval );
794
798
795
799
return object_common2 (UNSERIALIZE_PASSTHRU ,
796
800
object_common1 (UNSERIALIZE_PASSTHRU , ZEND_STANDARD_CLASS_DEF_PTR ));
797
801
}
798
- #line 799 "ext/standard/var_unserializer.c"
802
+ #line 803 "ext/standard/var_unserializer.c"
799
803
yy32 :
800
804
yych = * ++ YYCURSOR ;
801
805
if (yych == '+' ) goto yy33 ;
@@ -816,7 +820,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
816
820
yych = * ++ YYCURSOR ;
817
821
if (yych != '{' ) goto yy18 ;
818
822
++ YYCURSOR ;
819
- #line 650 "ext/standard/var_unserializer.re"
823
+ #line 653 "ext/standard/var_unserializer.re"
820
824
{
821
825
long elements = parse_iv (start + 2 );
822
826
/* use iv() not uiv() in order to check data range */
@@ -836,7 +840,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
836
840
837
841
return finish_nested_data (UNSERIALIZE_PASSTHRU );
838
842
}
839
- #line 840 "ext/standard/var_unserializer.c"
843
+ #line 844 "ext/standard/var_unserializer.c"
840
844
yy39 :
841
845
yych = * ++ YYCURSOR ;
842
846
if (yych == '+' ) goto yy40 ;
@@ -857,7 +861,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
857
861
yych = * ++ YYCURSOR ;
858
862
if (yych != '"' ) goto yy18 ;
859
863
++ YYCURSOR ;
860
- #line 621 "ext/standard/var_unserializer.re"
864
+ #line 624 "ext/standard/var_unserializer.re"
861
865
{
862
866
size_t len , maxlen ;
863
867
char * str ;
@@ -886,7 +890,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
886
890
ZVAL_STRINGL (* rval , str , len , 0 );
887
891
return 1 ;
888
892
}
889
- #line 890 "ext/standard/var_unserializer.c"
893
+ #line 894 "ext/standard/var_unserializer.c"
890
894
yy46 :
891
895
yych = * ++ YYCURSOR ;
892
896
if (yych == '+' ) goto yy47 ;
@@ -907,7 +911,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
907
911
yych = * ++ YYCURSOR ;
908
912
if (yych != '"' ) goto yy18 ;
909
913
++ YYCURSOR ;
910
- #line 593 "ext/standard/var_unserializer.re"
914
+ #line 596 "ext/standard/var_unserializer.re"
911
915
{
912
916
size_t len , maxlen ;
913
917
char * str ;
@@ -935,7 +939,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
935
939
ZVAL_STRINGL (* rval , str , len , 1 );
936
940
return 1 ;
937
941
}
938
- #line 939 "ext/standard/var_unserializer.c"
942
+ #line 943 "ext/standard/var_unserializer.c"
939
943
yy53 :
940
944
yych = * ++ YYCURSOR ;
941
945
if (yych <= '/' ) {
@@ -1023,7 +1027,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1023
1027
}
1024
1028
yy63 :
1025
1029
++ YYCURSOR ;
1026
- #line 583 "ext/standard/var_unserializer.re"
1030
+ #line 586 "ext/standard/var_unserializer.re"
1027
1031
{
1028
1032
#if SIZEOF_LONG == 4
1029
1033
use_double :
@@ -1033,7 +1037,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1033
1037
ZVAL_DOUBLE (* rval , zend_strtod ((const char * )start + 2 , NULL ));
1034
1038
return 1 ;
1035
1039
}
1036
- #line 1037 "ext/standard/var_unserializer.c"
1040
+ #line 1041 "ext/standard/var_unserializer.c"
1037
1041
yy65 :
1038
1042
yych = * ++ YYCURSOR ;
1039
1043
if (yych <= ',' ) {
@@ -1092,7 +1096,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1092
1096
yych = * ++ YYCURSOR ;
1093
1097
if (yych != ';' ) goto yy18 ;
1094
1098
++ YYCURSOR ;
1095
- #line 568 "ext/standard/var_unserializer.re"
1099
+ #line 571 "ext/standard/var_unserializer.re"
1096
1100
{
1097
1101
* p = YYCURSOR ;
1098
1102
INIT_PZVAL (* rval );
@@ -1107,7 +1111,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1107
1111
1108
1112
return 1 ;
1109
1113
}
1110
- #line 1111 "ext/standard/var_unserializer.c"
1114
+ #line 1115 "ext/standard/var_unserializer.c"
1111
1115
yy76 :
1112
1116
yych = * ++ YYCURSOR ;
1113
1117
if (yych == 'N' ) goto yy73 ;
@@ -1134,7 +1138,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1134
1138
if (yych <= '9' ) goto yy79 ;
1135
1139
if (yych != ';' ) goto yy18 ;
1136
1140
++ YYCURSOR ;
1137
- #line 541 "ext/standard/var_unserializer.re"
1141
+ #line 544 "ext/standard/var_unserializer.re"
1138
1142
{
1139
1143
#if SIZEOF_LONG == 4
1140
1144
int digits = YYCURSOR - start - 3 ;
@@ -1161,32 +1165,32 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1161
1165
ZVAL_LONG (* rval , parse_iv (start + 2 ));
1162
1166
return 1 ;
1163
1167
}
1164
- #line 1165 "ext/standard/var_unserializer.c"
1168
+ #line 1169 "ext/standard/var_unserializer.c"
1165
1169
yy83 :
1166
1170
yych = * ++ YYCURSOR ;
1167
1171
if (yych <= '/' ) goto yy18 ;
1168
1172
if (yych >= '2' ) goto yy18 ;
1169
1173
yych = * ++ YYCURSOR ;
1170
1174
if (yych != ';' ) goto yy18 ;
1171
1175
++ YYCURSOR ;
1172
- #line 534 "ext/standard/var_unserializer.re"
1176
+ #line 537 "ext/standard/var_unserializer.re"
1173
1177
{
1174
1178
* p = YYCURSOR ;
1175
1179
INIT_PZVAL (* rval );
1176
1180
ZVAL_BOOL (* rval , parse_iv (start + 2 ));
1177
1181
return 1 ;
1178
1182
}
1179
- #line 1180 "ext/standard/var_unserializer.c"
1183
+ #line 1184 "ext/standard/var_unserializer.c"
1180
1184
yy87 :
1181
1185
++ YYCURSOR ;
1182
- #line 527 "ext/standard/var_unserializer.re"
1186
+ #line 530 "ext/standard/var_unserializer.re"
1183
1187
{
1184
1188
* p = YYCURSOR ;
1185
1189
INIT_PZVAL (* rval );
1186
1190
ZVAL_NULL (* rval );
1187
1191
return 1 ;
1188
1192
}
1189
- #line 1190 "ext/standard/var_unserializer.c"
1193
+ #line 1194 "ext/standard/var_unserializer.c"
1190
1194
yy89 :
1191
1195
yych = * ++ YYCURSOR ;
1192
1196
if (yych <= ',' ) {
@@ -1209,7 +1213,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1209
1213
if (yych <= '9' ) goto yy91 ;
1210
1214
if (yych != ';' ) goto yy18 ;
1211
1215
++ YYCURSOR ;
1212
- #line 504 "ext/standard/var_unserializer.re"
1216
+ #line 507 "ext/standard/var_unserializer.re"
1213
1217
{
1214
1218
long id ;
1215
1219
@@ -1232,7 +1236,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1232
1236
1233
1237
return 1 ;
1234
1238
}
1235
- #line 1236 "ext/standard/var_unserializer.c"
1239
+ #line 1240 "ext/standard/var_unserializer.c"
1236
1240
yy95 :
1237
1241
yych = * ++ YYCURSOR ;
1238
1242
if (yych <= ',' ) {
@@ -1255,7 +1259,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1255
1259
if (yych <= '9' ) goto yy97 ;
1256
1260
if (yych != ';' ) goto yy18 ;
1257
1261
++ YYCURSOR ;
1258
- #line 483 "ext/standard/var_unserializer.re"
1262
+ #line 486 "ext/standard/var_unserializer.re"
1259
1263
{
1260
1264
long id ;
1261
1265
@@ -1276,9 +1280,9 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1276
1280
1277
1281
return 1 ;
1278
1282
}
1279
- #line 1280 "ext/standard/var_unserializer.c"
1283
+ #line 1284 "ext/standard/var_unserializer.c"
1280
1284
}
1281
- #line 832 "ext/standard/var_unserializer.re"
1285
+ #line 835 "ext/standard/var_unserializer.re"
1282
1286
1283
1287
1284
1288
return 0 ;
0 commit comments