}
if (current_import_sub) {
- len = Z_STRLEN(element_name->u.constant)+1;
+ len = Z_STRLEN(element_name->u.constant);
if (case_sensitive) {
lookup_name = STR_INIT(Z_STRVAL(element_name->u.constant), len, 0);
} else {
/* Check if function/const matches imported name */
if ((ns = zend_hash_find(current_import_sub, lookup_name)) != NULL) {
zval_dtor(&element_name->u.constant);
- zval_copy_ctor(&element_name->u.constant);
+ ZVAL_DUP(&element_name->u.constant, ns);
STR_FREE(lookup_name);
*check_namespace = 0;
return;
}
/* }}} */
-static void label_dtor(zval *zv) /* {{{ */
+static void ptr_dtor(zval *zv) /* {{{ */
{
efree(Z_PTR_P(zv));
}
if (!CG(context).labels) {
ALLOC_HASHTABLE(CG(context).labels);
- zend_hash_init(CG(context).labels, 4, NULL, label_dtor, 0);
+ zend_hash_init(CG(context).labels, 4, NULL, ptr_dtor, 0);
}
dest.brk_cont = CG(context).current_brk_cont;
}
} else {
ALLOC_HASHTABLE(*overriden);
- zend_hash_init_ex(*overriden, 2, NULL, NULL, 0, 0);
+ zend_hash_init_ex(*overriden, 2, NULL, ptr_dtor, 0, 0);
}
fn = zend_hash_update_mem(*overriden, key, fn, sizeof(zend_function));
return;
if (doing_inheritance) {
/* Make sure a trait does not try to extend a class */
if ((new_class_entry->ce_flags & ZEND_ACC_TRAIT) == ZEND_ACC_TRAIT) {
- zend_error_noreturn(E_COMPILE_ERROR, "A trait (%s) cannot extend a class. Traits can only be composed from other traits with the 'use' keyword. Error", new_class_entry->name);
+ zend_error_noreturn(E_COMPILE_ERROR, "A trait (%s) cannot extend a class. Traits can only be composed from other traits with the 'use' keyword. Error", new_class_entry->name->val);
}
opline->extended_value = parent_class_name->u.op.var;
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
- Z_DELREF_P(retval_ptr);
+//??? Z_DELREF_P(retval_ptr);
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr);
- Z_ADDREF_P(retval_ptr);
+//??? Z_ADDREF_P(retval_ptr);
}
CHECK_EXCEPTION();
offset = opline->op2.zv;
if (IS_VAR != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
- Z_DELREF_P(retval_ptr);
+//??? Z_DELREF_P(retval_ptr);
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr);
- Z_ADDREF_P(retval_ptr);
+//??? Z_ADDREF_P(retval_ptr);
}
CHECK_EXCEPTION();
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
if (IS_VAR != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
- Z_DELREF_P(retval_ptr);
+//??? Z_DELREF_P(retval_ptr);
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr);
- Z_ADDREF_P(retval_ptr);
+//??? Z_ADDREF_P(retval_ptr);
}
CHECK_EXCEPTION();
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
if (IS_VAR != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
- Z_DELREF_P(retval_ptr);
+//??? Z_DELREF_P(retval_ptr);
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr);
- Z_ADDREF_P(retval_ptr);
+//??? Z_ADDREF_P(retval_ptr);
}
CHECK_EXCEPTION();
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
- Z_DELREF_P(retval_ptr);
+//??? Z_DELREF_P(retval_ptr);
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr);
- Z_ADDREF_P(retval_ptr);
+//??? Z_ADDREF_P(retval_ptr);
}
CHECK_EXCEPTION();
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
if (IS_VAR != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);
offset = opline->op2.zv;
if (IS_UNUSED != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
if (IS_UNUSED != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
if (IS_UNUSED != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
if (IS_UNUSED != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
- Z_DELREF_P(retval_ptr);
+//??? Z_DELREF_P(retval_ptr);
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr);
- Z_ADDREF_P(retval_ptr);
+//??? Z_ADDREF_P(retval_ptr);
}
CHECK_EXCEPTION();
offset = opline->op2.zv;
if (IS_CV != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
- Z_DELREF_P(retval_ptr);
+//??? Z_DELREF_P(retval_ptr);
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr);
- Z_ADDREF_P(retval_ptr);
+//??? Z_ADDREF_P(retval_ptr);
}
CHECK_EXCEPTION();
offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
if (IS_CV != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
- Z_DELREF_P(retval_ptr);
+//??? Z_DELREF_P(retval_ptr);
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr);
- Z_ADDREF_P(retval_ptr);
+//??? Z_ADDREF_P(retval_ptr);
}
CHECK_EXCEPTION();
offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
if (IS_CV != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);
}
// ZVAL_COPY(EX_VAR(opline->result.var), retval);
ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
+ if (IS_REFCOUNTED(Z_TYPE_P(retval))) Z_ADDREF_P(retval);
//??? switch (type) {
//??? case BP_VAR_R:
//??? case BP_VAR_IS:
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
- Z_DELREF_P(retval_ptr);
+//??? Z_DELREF_P(retval_ptr);
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr);
- Z_ADDREF_P(retval_ptr);
+//??? Z_ADDREF_P(retval_ptr);
}
CHECK_EXCEPTION();
if (UNEXPECTED(opline->extended_value != 0)) {
zval *retval_ptr = EX_VAR(opline->result.var);
- Z_DELREF_P(retval_ptr);
+//??? Z_DELREF_P(retval_ptr);
SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr);
- Z_ADDREF_P(retval_ptr);
+//??? Z_ADDREF_P(retval_ptr);
}
CHECK_EXCEPTION();
offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
if (IS_CV != IS_VAR || container) {
+//???deref
+ if (Z_TYPE_P(container) == IS_REFERENCE) {
+ container = Z_REFVAL_P(container);
+ }
switch (Z_TYPE_P(container)) {
case IS_ARRAY: {
HashTable *ht = Z_ARRVAL_P(container);