@@ -2364,7 +2364,20 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2364
2364
SAVE_OPLINE();
2365
2365
z = opline->op1.zv;
2366
2366
2367
- zend_print_variable(z TSRMLS_CC);
2367
+ if (Z_TYPE_P(z) == IS_STRING) {
2368
+ zend_string *str = Z_STR_P(z);
2369
+
2370
+ if (str->len != 0) {
2371
+ zend_write(str->val, str->len);
2372
+ }
2373
+ } else {
2374
+ zend_string *str = _zval_get_string_func(z TSRMLS_CC);
2375
+
2376
+ if (str->len != 0) {
2377
+ zend_write(str->val, str->len);
2378
+ }
2379
+ zend_string_release(str);
2380
+ }
2368
2381
2369
2382
CHECK_EXCEPTION();
2370
2383
ZEND_VM_NEXT_OPCODE();
@@ -8635,30 +8648,6 @@ static int ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG
8635
8648
ZEND_VM_NEXT_OPCODE();
8636
8649
}
8637
8650
8638
- static int ZEND_FASTCALL ZEND_ECHO_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8639
- {
8640
- USE_OPLINE
8641
- zend_free_op free_op1;
8642
- zval *z;
8643
-
8644
- SAVE_OPLINE();
8645
- z = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1);
8646
-
8647
- zend_print_variable(z TSRMLS_CC);
8648
-
8649
- zval_ptr_dtor_nogc(free_op1);
8650
- CHECK_EXCEPTION();
8651
- ZEND_VM_NEXT_OPCODE();
8652
- }
8653
-
8654
- static int ZEND_FASTCALL ZEND_PRINT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8655
- {
8656
- USE_OPLINE
8657
-
8658
- ZVAL_LONG(EX_VAR(opline->result.var), 1);
8659
- return ZEND_ECHO_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
8660
- }
8661
-
8662
8651
static int ZEND_FASTCALL ZEND_JMPZ_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8663
8652
{
8664
8653
USE_OPLINE
@@ -13165,30 +13154,6 @@ static int ZEND_FASTCALL ZEND_POST_DEC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
13165
13154
ZEND_VM_NEXT_OPCODE();
13166
13155
}
13167
13156
13168
- static int ZEND_FASTCALL ZEND_ECHO_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13169
- {
13170
- USE_OPLINE
13171
- zend_free_op free_op1;
13172
- zval *z;
13173
-
13174
- SAVE_OPLINE();
13175
- z = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1);
13176
-
13177
- zend_print_variable(z TSRMLS_CC);
13178
-
13179
- zval_ptr_dtor_nogc(free_op1);
13180
- CHECK_EXCEPTION();
13181
- ZEND_VM_NEXT_OPCODE();
13182
- }
13183
-
13184
- static int ZEND_FASTCALL ZEND_PRINT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13185
- {
13186
- USE_OPLINE
13187
-
13188
- ZVAL_LONG(EX_VAR(opline->result.var), 1);
13189
- return ZEND_ECHO_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
13190
- }
13191
-
13192
13157
static int ZEND_FASTCALL ZEND_JMPZ_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13193
13158
{
13194
13159
USE_OPLINE
@@ -27303,9 +27268,22 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27303
27268
zval *z;
27304
27269
27305
27270
SAVE_OPLINE();
27306
- z = _get_zval_ptr_cv_deref_BP_VAR_R (execute_data, opline->op1.var TSRMLS_CC);
27271
+ z = _get_zval_ptr_cv_BP_VAR_R (execute_data, opline->op1.var TSRMLS_CC);
27307
27272
27308
- zend_print_variable(z TSRMLS_CC);
27273
+ if (Z_TYPE_P(z) == IS_STRING) {
27274
+ zend_string *str = Z_STR_P(z);
27275
+
27276
+ if (str->len != 0) {
27277
+ zend_write(str->val, str->len);
27278
+ }
27279
+ } else {
27280
+ zend_string *str = _zval_get_string_func(z TSRMLS_CC);
27281
+
27282
+ if (str->len != 0) {
27283
+ zend_write(str->val, str->len);
27284
+ }
27285
+ zend_string_release(str);
27286
+ }
27309
27287
27310
27288
CHECK_EXCEPTION();
27311
27289
ZEND_VM_NEXT_OPCODE();
@@ -36726,6 +36704,43 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEN
36726
36704
ZEND_VM_NEXT_OPCODE();
36727
36705
}
36728
36706
36707
+ static int ZEND_FASTCALL ZEND_ECHO_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36708
+ {
36709
+ USE_OPLINE
36710
+ zend_free_op free_op1;
36711
+ zval *z;
36712
+
36713
+ SAVE_OPLINE();
36714
+ z = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
36715
+
36716
+ if (Z_TYPE_P(z) == IS_STRING) {
36717
+ zend_string *str = Z_STR_P(z);
36718
+
36719
+ if (str->len != 0) {
36720
+ zend_write(str->val, str->len);
36721
+ }
36722
+ } else {
36723
+ zend_string *str = _zval_get_string_func(z TSRMLS_CC);
36724
+
36725
+ if (str->len != 0) {
36726
+ zend_write(str->val, str->len);
36727
+ }
36728
+ zend_string_release(str);
36729
+ }
36730
+
36731
+ zval_ptr_dtor_nogc(free_op1);
36732
+ CHECK_EXCEPTION();
36733
+ ZEND_VM_NEXT_OPCODE();
36734
+ }
36735
+
36736
+ static int ZEND_FASTCALL ZEND_PRINT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36737
+ {
36738
+ USE_OPLINE
36739
+
36740
+ ZVAL_LONG(EX_VAR(opline->result.var), 1);
36741
+ return ZEND_ECHO_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
36742
+ }
36743
+
36729
36744
static int ZEND_FASTCALL ZEND_FREE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36730
36745
{
36731
36746
USE_OPLINE
@@ -39195,16 +39210,16 @@ void zend_init_opcodes_handlers(void)
39195
39210
ZEND_ECHO_SPEC_CONST_HANDLER,
39196
39211
ZEND_ECHO_SPEC_CONST_HANDLER,
39197
39212
ZEND_ECHO_SPEC_CONST_HANDLER,
39198
- ZEND_ECHO_SPEC_TMP_HANDLER ,
39199
- ZEND_ECHO_SPEC_TMP_HANDLER ,
39200
- ZEND_ECHO_SPEC_TMP_HANDLER ,
39201
- ZEND_ECHO_SPEC_TMP_HANDLER ,
39202
- ZEND_ECHO_SPEC_TMP_HANDLER ,
39203
- ZEND_ECHO_SPEC_VAR_HANDLER ,
39204
- ZEND_ECHO_SPEC_VAR_HANDLER ,
39205
- ZEND_ECHO_SPEC_VAR_HANDLER ,
39206
- ZEND_ECHO_SPEC_VAR_HANDLER ,
39207
- ZEND_ECHO_SPEC_VAR_HANDLER ,
39213
+ ZEND_ECHO_SPEC_TMPVAR_HANDLER ,
39214
+ ZEND_ECHO_SPEC_TMPVAR_HANDLER ,
39215
+ ZEND_ECHO_SPEC_TMPVAR_HANDLER ,
39216
+ ZEND_ECHO_SPEC_TMPVAR_HANDLER ,
39217
+ ZEND_ECHO_SPEC_TMPVAR_HANDLER ,
39218
+ ZEND_ECHO_SPEC_TMPVAR_HANDLER ,
39219
+ ZEND_ECHO_SPEC_TMPVAR_HANDLER ,
39220
+ ZEND_ECHO_SPEC_TMPVAR_HANDLER ,
39221
+ ZEND_ECHO_SPEC_TMPVAR_HANDLER ,
39222
+ ZEND_ECHO_SPEC_TMPVAR_HANDLER ,
39208
39223
ZEND_NULL_HANDLER,
39209
39224
ZEND_NULL_HANDLER,
39210
39225
ZEND_NULL_HANDLER,
@@ -39220,16 +39235,16 @@ void zend_init_opcodes_handlers(void)
39220
39235
ZEND_PRINT_SPEC_CONST_HANDLER,
39221
39236
ZEND_PRINT_SPEC_CONST_HANDLER,
39222
39237
ZEND_PRINT_SPEC_CONST_HANDLER,
39223
- ZEND_PRINT_SPEC_TMP_HANDLER ,
39224
- ZEND_PRINT_SPEC_TMP_HANDLER ,
39225
- ZEND_PRINT_SPEC_TMP_HANDLER ,
39226
- ZEND_PRINT_SPEC_TMP_HANDLER ,
39227
- ZEND_PRINT_SPEC_TMP_HANDLER ,
39228
- ZEND_PRINT_SPEC_VAR_HANDLER ,
39229
- ZEND_PRINT_SPEC_VAR_HANDLER ,
39230
- ZEND_PRINT_SPEC_VAR_HANDLER ,
39231
- ZEND_PRINT_SPEC_VAR_HANDLER ,
39232
- ZEND_PRINT_SPEC_VAR_HANDLER ,
39238
+ ZEND_PRINT_SPEC_TMPVAR_HANDLER ,
39239
+ ZEND_PRINT_SPEC_TMPVAR_HANDLER ,
39240
+ ZEND_PRINT_SPEC_TMPVAR_HANDLER ,
39241
+ ZEND_PRINT_SPEC_TMPVAR_HANDLER ,
39242
+ ZEND_PRINT_SPEC_TMPVAR_HANDLER ,
39243
+ ZEND_PRINT_SPEC_TMPVAR_HANDLER ,
39244
+ ZEND_PRINT_SPEC_TMPVAR_HANDLER ,
39245
+ ZEND_PRINT_SPEC_TMPVAR_HANDLER ,
39246
+ ZEND_PRINT_SPEC_TMPVAR_HANDLER ,
39247
+ ZEND_PRINT_SPEC_TMPVAR_HANDLER ,
39233
39248
ZEND_NULL_HANDLER,
39234
39249
ZEND_NULL_HANDLER,
39235
39250
ZEND_NULL_HANDLER,
0 commit comments