USE_OPLINE
zend_free_op free_op1;
zval *container;
+//???
+ int do_free = 1;
SAVE_OPLINE();
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(container) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
+//??? we must not free implicitly created array (it should be fixed in another way)
+ if (IS_VAR == IS_VAR && !Z_REFCOUNTED_P(container)) {
+ do_free = 0;
+ }
zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_W TSRMLS_CC);
//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
//??? }
- if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
+
+//???
+ if (IS_VAR == IS_VAR && do_free) {
+ if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
+ }
/* We are going to assign the result by reference */
if (UNEXPECTED(opline->extended_value != 0)) {
USE_OPLINE
zend_free_op free_op1, free_op2;
zval *container;
+//???
+ int do_free = 1;
SAVE_OPLINE();
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(container) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
+//??? we must not free implicitly created array (it should be fixed in another way)
+ if (IS_VAR == IS_VAR && !Z_REFCOUNTED_P(container)) {
+ do_free = 0;
+ }
zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_W TSRMLS_CC);
zval_dtor(free_op2.var);
//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
//??? }
- if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
+
+//???
+ if (IS_VAR == IS_VAR && do_free) {
+ if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
+ }
/* We are going to assign the result by reference */
if (UNEXPECTED(opline->extended_value != 0)) {
USE_OPLINE
zend_free_op free_op1, free_op2;
zval *container;
+//???
+ int do_free = 1;
SAVE_OPLINE();
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(container) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
+//??? we must not free implicitly created array (it should be fixed in another way)
+ if (IS_VAR == IS_VAR && !Z_REFCOUNTED_P(container)) {
+ do_free = 0;
+ }
zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_W TSRMLS_CC);
zval_ptr_dtor_nogc(free_op2.var);
//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
//??? }
- if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
+
+//???
+ if (IS_VAR == IS_VAR && do_free) {
+ if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
+ }
/* We are going to assign the result by reference */
if (UNEXPECTED(opline->extended_value != 0)) {
USE_OPLINE
zend_free_op free_op1;
zval *container;
+//???
+ int do_free = 1;
SAVE_OPLINE();
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(container) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
+//??? we must not free implicitly created array (it should be fixed in another way)
+ if (IS_VAR == IS_VAR && !Z_REFCOUNTED_P(container)) {
+ do_free = 0;
+ }
zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_W TSRMLS_CC);
//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
//??? }
- if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
+
+//???
+ if (IS_VAR == IS_VAR && do_free) {
+ if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
+ }
/* We are going to assign the result by reference */
if (UNEXPECTED(opline->extended_value != 0)) {
USE_OPLINE
zend_free_op free_op1;
zval *container;
+//???
+ int do_free = 1;
SAVE_OPLINE();
container = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(container) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
+//??? we must not free implicitly created array (it should be fixed in another way)
+ if (IS_VAR == IS_VAR && !Z_REFCOUNTED_P(container)) {
+ do_free = 0;
+ }
zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_W TSRMLS_CC);
//??? if (IS_VAR == IS_VAR && (free_op1.var != NULL) && READY_TO_DESTROY(free_op1.var)) {
//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
//??? }
- if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
+
+//???
+ if (IS_VAR == IS_VAR && do_free) {
+ if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
+ }
/* We are going to assign the result by reference */
if (UNEXPECTED(opline->extended_value != 0)) {
USE_OPLINE
zend_free_op free_op1;
zval *container;
+//???
+ int do_free = 1;
SAVE_OPLINE();
container = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(container) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
+//??? we must not free implicitly created array (it should be fixed in another way)
+ if (IS_CV == IS_VAR && !Z_REFCOUNTED_P(container)) {
+ do_free = 0;
+ }
zend_fetch_dimension_address(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST, BP_VAR_W TSRMLS_CC);
//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
//??? }
+//???
+ if (IS_CV == IS_VAR && do_free) {
+
+ }
+
/* We are going to assign the result by reference */
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
USE_OPLINE
zend_free_op free_op1, free_op2;
zval *container;
+//???
+ int do_free = 1;
SAVE_OPLINE();
container = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(container) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
+//??? we must not free implicitly created array (it should be fixed in another way)
+ if (IS_CV == IS_VAR && !Z_REFCOUNTED_P(container)) {
+ do_free = 0;
+ }
zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR, BP_VAR_W TSRMLS_CC);
zval_dtor(free_op2.var);
//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
//??? }
+//???
+ if (IS_CV == IS_VAR && do_free) {
+
+ }
+
/* We are going to assign the result by reference */
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
USE_OPLINE
zend_free_op free_op1, free_op2;
zval *container;
+//???
+ int do_free = 1;
SAVE_OPLINE();
container = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(container) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
+//??? we must not free implicitly created array (it should be fixed in another way)
+ if (IS_CV == IS_VAR && !Z_REFCOUNTED_P(container)) {
+ do_free = 0;
+ }
zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR, BP_VAR_W TSRMLS_CC);
zval_ptr_dtor_nogc(free_op2.var);
//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
//??? }
+//???
+ if (IS_CV == IS_VAR && do_free) {
+
+ }
+
/* We are going to assign the result by reference */
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
USE_OPLINE
zend_free_op free_op1;
zval *container;
+//???
+ int do_free = 1;
SAVE_OPLINE();
container = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(container) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
+//??? we must not free implicitly created array (it should be fixed in another way)
+ if (IS_CV == IS_VAR && !Z_REFCOUNTED_P(container)) {
+ do_free = 0;
+ }
zend_fetch_dimension_address(EX_VAR(opline->result.var), container, NULL, IS_UNUSED, BP_VAR_W TSRMLS_CC);
//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
//??? }
+//???
+ if (IS_CV == IS_VAR && do_free) {
+
+ }
+
/* We are going to assign the result by reference */
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
USE_OPLINE
zend_free_op free_op1;
zval *container;
+//???
+ int do_free = 1;
SAVE_OPLINE();
container = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(container) == IS_STR_OFFSET)) {
zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
}
+//??? we must not free implicitly created array (it should be fixed in another way)
+ if (IS_CV == IS_VAR && !Z_REFCOUNTED_P(container)) {
+ do_free = 0;
+ }
zend_fetch_dimension_address(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV, BP_VAR_W TSRMLS_CC);
//??? if (IS_CV == IS_VAR && 0 && READY_TO_DESTROY(free_op1.var)) {
//??? EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
//??? }
+//???
+ if (IS_CV == IS_VAR && do_free) {
+
+ }
+
/* We are going to assign the result by reference */
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);