@@ -328,6 +328,7 @@ static inline void zend_assign_to_variable(znode *result, znode *op1, znode *op2
328
328
int i ;
329
329
330
330
if (T -> EA .data .str_offset .str -> value .str .len == 0 ) {
331
+ STR_FREE (T -> EA .data .str_offset .str -> value .str .val );
331
332
T -> EA .data .str_offset .str -> value .str .val = (char * ) emalloc (T -> EA .data .str_offset .offset + 1 + 1 );
332
333
} else {
333
334
T -> EA .data .str_offset .str -> value .str .val = (char * ) erealloc (T -> EA .data .str_offset .str -> value .str .val , T -> EA .data .str_offset .offset + 1 + 1 );
@@ -1085,12 +1086,9 @@ ZEND_API void execute(zend_op_array *op_array ELS_DC)
1085
1086
EG (binary_op ) = boolean_xor_function ;
1086
1087
/* Fall through */
1087
1088
binary_op_addr :
1088
- {
1089
- zval * zp1 = get_zval_ptr (& opline -> op1 , Ts , & EG (free_op1 ), BP_VAR_R );
1090
- zval * zp2 = get_zval_ptr (& opline -> op2 , Ts , & EG (free_op1 ), BP_VAR_R );
1091
-
1092
- EG (binary_op )(& Ts [opline -> result .u .var ].tmp_var , zp1 , zp2 );
1093
- }
1089
+ EG (binary_op )(& Ts [opline -> result .u .var ].tmp_var ,
1090
+ get_zval_ptr (& opline -> op1 , Ts , & EG (free_op1 ), BP_VAR_R ),
1091
+ get_zval_ptr (& opline -> op2 , Ts , & EG (free_op2 ), BP_VAR_R ) );
1094
1092
FREE_OP (& opline -> op1 , EG (free_op1 ));
1095
1093
FREE_OP (& opline -> op2 , EG (free_op2 ));
1096
1094
NEXT_OPCODE ();
0 commit comments