1
- /* Generated by re2c 0.13.5 */
1
+ /* Generated by re2c 0.13.7.5 on Thu Dec 11 19:26:19 2014 */
2
2
#line 1 "ext/standard/var_unserializer.re"
3
3
/*
4
4
+----------------------------------------------------------------------+
@@ -343,6 +343,9 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long
343
343
} else {
344
344
/* object properties should include no integers */
345
345
convert_to_string (key );
346
+ if (zend_symtable_find (ht , Z_STRVAL_P (key ), Z_STRLEN_P (key ) + 1 , (void * * )& old_data )== SUCCESS ) {
347
+ var_push_dtor (var_hash , old_data );
348
+ }
346
349
zend_hash_update (ht , Z_STRVAL_P (key ), Z_STRLEN_P (key ) + 1 , & data ,
347
350
sizeof data , NULL );
348
351
}
@@ -480,7 +483,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
480
483
481
484
482
485
483
- #line 484 "ext/standard/var_unserializer.c"
486
+ #line 487 "ext/standard/var_unserializer.c"
484
487
{
485
488
YYCTYPE yych ;
486
489
static const unsigned char yybm [] = {
@@ -540,9 +543,9 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
540
543
yych = * (YYMARKER = ++ YYCURSOR );
541
544
if (yych == ':' ) goto yy95 ;
542
545
yy3 :
543
- #line 835 "ext/standard/var_unserializer.re"
546
+ #line 838 "ext/standard/var_unserializer.re"
544
547
{ return 0 ; }
545
- #line 546 "ext/standard/var_unserializer.c"
548
+ #line 549 "ext/standard/var_unserializer.c"
546
549
yy4 :
547
550
yych = * (YYMARKER = ++ YYCURSOR );
548
551
if (yych == ':' ) goto yy89 ;
@@ -585,13 +588,13 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
585
588
goto yy3 ;
586
589
yy14 :
587
590
++ YYCURSOR ;
588
- #line 829 "ext/standard/var_unserializer.re"
591
+ #line 832 "ext/standard/var_unserializer.re"
589
592
{
590
593
/* this is the case where we have less data than planned */
591
594
php_error_docref (NULL TSRMLS_CC , E_NOTICE , "Unexpected end of serialized data" );
592
595
return 0 ; /* not sure if it should be 0 or 1 here? */
593
596
}
594
- #line 595 "ext/standard/var_unserializer.c"
597
+ #line 598 "ext/standard/var_unserializer.c"
595
598
yy16 :
596
599
yych = * ++ YYCURSOR ;
597
600
goto yy3 ;
@@ -617,11 +620,12 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
617
620
if (yybm [0 + yych ] & 128 ) {
618
621
goto yy20 ;
619
622
}
620
- if (yych != ':' ) goto yy18 ;
623
+ if (yych <= '/' ) goto yy18 ;
624
+ if (yych >= ';' ) goto yy18 ;
621
625
yych = * ++ YYCURSOR ;
622
626
if (yych != '"' ) goto yy18 ;
623
627
++ YYCURSOR ;
624
- #line 683 "ext/standard/var_unserializer.re"
628
+ #line 686 "ext/standard/var_unserializer.re"
625
629
{
626
630
size_t len , len2 , len3 , maxlen ;
627
631
long elements ;
@@ -767,7 +771,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
767
771
768
772
return object_common2 (UNSERIALIZE_PASSTHRU , elements );
769
773
}
770
- #line 771 "ext/standard/var_unserializer.c"
774
+ #line 775 "ext/standard/var_unserializer.c"
771
775
yy25 :
772
776
yych = * ++ YYCURSOR ;
773
777
if (yych <= ',' ) {
@@ -792,15 +796,15 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
792
796
yych = * ++ YYCURSOR ;
793
797
if (yych != '"' ) goto yy18 ;
794
798
++ YYCURSOR ;
795
- #line 675 "ext/standard/var_unserializer.re"
799
+ #line 678 "ext/standard/var_unserializer.re"
796
800
{
797
801
798
802
INIT_PZVAL (* rval );
799
803
800
804
return object_common2 (UNSERIALIZE_PASSTHRU ,
801
805
object_common1 (UNSERIALIZE_PASSTHRU , ZEND_STANDARD_CLASS_DEF_PTR ));
802
806
}
803
- #line 804 "ext/standard/var_unserializer.c"
807
+ #line 808 "ext/standard/var_unserializer.c"
804
808
yy32 :
805
809
yych = * ++ YYCURSOR ;
806
810
if (yych == '+' ) goto yy33 ;
@@ -821,7 +825,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
821
825
yych = * ++ YYCURSOR ;
822
826
if (yych != '{' ) goto yy18 ;
823
827
++ YYCURSOR ;
824
- #line 655 "ext/standard/var_unserializer.re"
828
+ #line 658 "ext/standard/var_unserializer.re"
825
829
{
826
830
long elements = parse_iv (start + 2 );
827
831
/* use iv() not uiv() in order to check data range */
@@ -841,7 +845,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
841
845
842
846
return finish_nested_data (UNSERIALIZE_PASSTHRU );
843
847
}
844
- #line 845 "ext/standard/var_unserializer.c"
848
+ #line 849 "ext/standard/var_unserializer.c"
845
849
yy39 :
846
850
yych = * ++ YYCURSOR ;
847
851
if (yych == '+' ) goto yy40 ;
@@ -862,7 +866,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
862
866
yych = * ++ YYCURSOR ;
863
867
if (yych != '"' ) goto yy18 ;
864
868
++ YYCURSOR ;
865
- #line 626 "ext/standard/var_unserializer.re"
869
+ #line 629 "ext/standard/var_unserializer.re"
866
870
{
867
871
size_t len , maxlen ;
868
872
char * str ;
@@ -891,7 +895,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
891
895
ZVAL_STRINGL (* rval , str , len , 0 );
892
896
return 1 ;
893
897
}
894
- #line 895 "ext/standard/var_unserializer.c"
898
+ #line 899 "ext/standard/var_unserializer.c"
895
899
yy46 :
896
900
yych = * ++ YYCURSOR ;
897
901
if (yych == '+' ) goto yy47 ;
@@ -912,7 +916,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
912
916
yych = * ++ YYCURSOR ;
913
917
if (yych != '"' ) goto yy18 ;
914
918
++ YYCURSOR ;
915
- #line 598 "ext/standard/var_unserializer.re"
919
+ #line 601 "ext/standard/var_unserializer.re"
916
920
{
917
921
size_t len , maxlen ;
918
922
char * str ;
@@ -940,7 +944,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
940
944
ZVAL_STRINGL (* rval , str , len , 1 );
941
945
return 1 ;
942
946
}
943
- #line 944 "ext/standard/var_unserializer.c"
947
+ #line 948 "ext/standard/var_unserializer.c"
944
948
yy53 :
945
949
yych = * ++ YYCURSOR ;
946
950
if (yych <= '/' ) {
@@ -1028,7 +1032,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1028
1032
}
1029
1033
yy63 :
1030
1034
++ YYCURSOR ;
1031
- #line 588 "ext/standard/var_unserializer.re"
1035
+ #line 591 "ext/standard/var_unserializer.re"
1032
1036
{
1033
1037
#if SIZEOF_LONG == 4
1034
1038
use_double :
@@ -1038,7 +1042,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1038
1042
ZVAL_DOUBLE (* rval , zend_strtod ((const char * )start + 2 , NULL ));
1039
1043
return 1 ;
1040
1044
}
1041
- #line 1042 "ext/standard/var_unserializer.c"
1045
+ #line 1046 "ext/standard/var_unserializer.c"
1042
1046
yy65 :
1043
1047
yych = * ++ YYCURSOR ;
1044
1048
if (yych <= ',' ) {
@@ -1097,7 +1101,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1097
1101
yych = * ++ YYCURSOR ;
1098
1102
if (yych != ';' ) goto yy18 ;
1099
1103
++ YYCURSOR ;
1100
- #line 573 "ext/standard/var_unserializer.re"
1104
+ #line 576 "ext/standard/var_unserializer.re"
1101
1105
{
1102
1106
* p = YYCURSOR ;
1103
1107
INIT_PZVAL (* rval );
@@ -1112,7 +1116,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1112
1116
1113
1117
return 1 ;
1114
1118
}
1115
- #line 1116 "ext/standard/var_unserializer.c"
1119
+ #line 1120 "ext/standard/var_unserializer.c"
1116
1120
yy76 :
1117
1121
yych = * ++ YYCURSOR ;
1118
1122
if (yych == 'N' ) goto yy73 ;
@@ -1139,7 +1143,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1139
1143
if (yych <= '9' ) goto yy79 ;
1140
1144
if (yych != ';' ) goto yy18 ;
1141
1145
++ YYCURSOR ;
1142
- #line 546 "ext/standard/var_unserializer.re"
1146
+ #line 549 "ext/standard/var_unserializer.re"
1143
1147
{
1144
1148
#if SIZEOF_LONG == 4
1145
1149
int digits = YYCURSOR - start - 3 ;
@@ -1166,32 +1170,32 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1166
1170
ZVAL_LONG (* rval , parse_iv (start + 2 ));
1167
1171
return 1 ;
1168
1172
}
1169
- #line 1170 "ext/standard/var_unserializer.c"
1173
+ #line 1174 "ext/standard/var_unserializer.c"
1170
1174
yy83 :
1171
1175
yych = * ++ YYCURSOR ;
1172
1176
if (yych <= '/' ) goto yy18 ;
1173
1177
if (yych >= '2' ) goto yy18 ;
1174
1178
yych = * ++ YYCURSOR ;
1175
1179
if (yych != ';' ) goto yy18 ;
1176
1180
++ YYCURSOR ;
1177
- #line 539 "ext/standard/var_unserializer.re"
1181
+ #line 542 "ext/standard/var_unserializer.re"
1178
1182
{
1179
1183
* p = YYCURSOR ;
1180
1184
INIT_PZVAL (* rval );
1181
1185
ZVAL_BOOL (* rval , parse_iv (start + 2 ));
1182
1186
return 1 ;
1183
1187
}
1184
- #line 1185 "ext/standard/var_unserializer.c"
1188
+ #line 1189 "ext/standard/var_unserializer.c"
1185
1189
yy87 :
1186
1190
++ YYCURSOR ;
1187
- #line 532 "ext/standard/var_unserializer.re"
1191
+ #line 535 "ext/standard/var_unserializer.re"
1188
1192
{
1189
1193
* p = YYCURSOR ;
1190
1194
INIT_PZVAL (* rval );
1191
1195
ZVAL_NULL (* rval );
1192
1196
return 1 ;
1193
1197
}
1194
- #line 1195 "ext/standard/var_unserializer.c"
1198
+ #line 1199 "ext/standard/var_unserializer.c"
1195
1199
yy89 :
1196
1200
yych = * ++ YYCURSOR ;
1197
1201
if (yych <= ',' ) {
@@ -1214,7 +1218,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1214
1218
if (yych <= '9' ) goto yy91 ;
1215
1219
if (yych != ';' ) goto yy18 ;
1216
1220
++ YYCURSOR ;
1217
- #line 509 "ext/standard/var_unserializer.re"
1221
+ #line 512 "ext/standard/var_unserializer.re"
1218
1222
{
1219
1223
long id ;
1220
1224
@@ -1237,7 +1241,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1237
1241
1238
1242
return 1 ;
1239
1243
}
1240
- #line 1241 "ext/standard/var_unserializer.c"
1244
+ #line 1245 "ext/standard/var_unserializer.c"
1241
1245
yy95 :
1242
1246
yych = * ++ YYCURSOR ;
1243
1247
if (yych <= ',' ) {
@@ -1260,7 +1264,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1260
1264
if (yych <= '9' ) goto yy97 ;
1261
1265
if (yych != ';' ) goto yy18 ;
1262
1266
++ YYCURSOR ;
1263
- #line 488 "ext/standard/var_unserializer.re"
1267
+ #line 491 "ext/standard/var_unserializer.re"
1264
1268
{
1265
1269
long id ;
1266
1270
@@ -1281,9 +1285,9 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
1281
1285
1282
1286
return 1 ;
1283
1287
}
1284
- #line 1285 "ext/standard/var_unserializer.c"
1288
+ #line 1289 "ext/standard/var_unserializer.c"
1285
1289
}
1286
- #line 837 "ext/standard/var_unserializer.re"
1290
+ #line 840 "ext/standard/var_unserializer.re"
1287
1291
1288
1292
1289
1293
return 0 ;
0 commit comments