ZEND_API void _zval_ptr_dtor(zval **zval_ptr ZEND_FILE_LINE_DC) /* {{{ */
{
+ zval *zv = *zval_ptr;
+
#if DEBUG_ZEND>=2
printf("Reducing refcount for %x (%x): %d->%d\n", *zval_ptr, zval_ptr, Z_REFCOUNT_PP(zval_ptr), Z_REFCOUNT_PP(zval_ptr) - 1);
#endif
- Z_DELREF_PP(zval_ptr);
- if (Z_REFCOUNT_PP(zval_ptr) == 0) {
+ Z_DELREF_P(zv);
+ if (Z_REFCOUNT_P(zv) == 0) {
TSRMLS_FETCH();
- if (*zval_ptr != &EG(uninitialized_zval)) {
- GC_REMOVE_ZVAL_FROM_BUFFER(*zval_ptr);
- zval_dtor(*zval_ptr);
- efree_rel(*zval_ptr);
+ if (zv != &EG(uninitialized_zval)) {
+ GC_REMOVE_ZVAL_FROM_BUFFER(zv);
+ zval_dtor(zv);
+ efree_rel(zv);
}
} else {
TSRMLS_FETCH();
- if (Z_REFCOUNT_PP(zval_ptr) == 1) {
- Z_UNSET_ISREF_PP(zval_ptr);
+ if (Z_REFCOUNT_P(zv) == 1) {
+ Z_UNSET_ISREF_P(zv);
}
- GC_ZVAL_CHECK_POSSIBLE_ROOT(*zval_ptr);
+ GC_ZVAL_CHECK_POSSIBLE_ROOT(zv);
}
}
/* }}} */