zend_error(E_ERROR, "Undefined constant '%s'", save->val);
}
if (inline_change) {
-//??? STR_RELEASE(save);
+ STR_RELEASE(save);
}
save = NULL;
}
- if (inline_change && save && save->val != actual) {
-//??? STR_RELEASE(save);
- }
zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", actual, actual);
p->type = IS_STRING;
if (!inline_change) {
ZVAL_STRINGL(p, actual, actual_len);
+ } else if (save) {
+ STR_RELEASE(save);
}
}
} else {
var_ptr = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->result.var TSRMLS_CC);
zval_ptr_dtor(var_ptr);
if (param == NULL) {
+//???
+#if 1
+ if (IS_CONSTANT_TYPE(Z_TYPE_P(opline->op2.zv))) {
+ zval tmp;
+
+ ZVAL_COPY_VALUE(&tmp, opline->op2.zv);
+ zval_update_constant(&tmp, 0 TSRMLS_CC);
+//???: var_ptr may become INDIRECT
+ if (Z_TYPE_P(var_ptr) == IS_INDIRECT) {
+ var_ptr = Z_INDIRECT_P(var_ptr);
+ }
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ ZVAL_COPY_VALUE(var_ptr, opline->op2.zv);
+ zval_copy_ctor(var_ptr);
+ }
+#else
ZVAL_COPY_VALUE(var_ptr, opline->op2.zv);
if (IS_CONSTANT_TYPE(Z_TYPE_P(var_ptr))) {
zval_update_constant(var_ptr, 0 TSRMLS_CC);
} else {
zval_copy_ctor(var_ptr);
}
+#endif
} else {
ZVAL_COPY(var_ptr, param);
}
var_ptr = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->result.var TSRMLS_CC);
zval_ptr_dtor(var_ptr);
if (param == NULL) {
+//???
+#if 1
+ if (IS_CONSTANT_TYPE(Z_TYPE_P(opline->op2.zv))) {
+ zval tmp;
+
+ ZVAL_COPY_VALUE(&tmp, opline->op2.zv);
+ zval_update_constant(&tmp, 0 TSRMLS_CC);
+//???: var_ptr may become INDIRECT
+ if (Z_TYPE_P(var_ptr) == IS_INDIRECT) {
+ var_ptr = Z_INDIRECT_P(var_ptr);
+ }
+ ZVAL_COPY_VALUE(var_ptr, &tmp);
+ } else {
+ ZVAL_COPY_VALUE(var_ptr, opline->op2.zv);
+ zval_copy_ctor(var_ptr);
+ }
+#else
ZVAL_COPY_VALUE(var_ptr, opline->op2.zv);
if (IS_CONSTANT_TYPE(Z_TYPE_P(var_ptr))) {
zval_update_constant(var_ptr, 0 TSRMLS_CC);
} else {
zval_copy_ctor(var_ptr);
}
+#endif
} else {
ZVAL_COPY(var_ptr, param);
}