summaryrefslogtreecommitdiff
path: root/Zend/zend_execute_API.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r--Zend/zend_execute_API.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index 28f7347b30..39dea80c74 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -359,6 +359,21 @@ ZEND_API void _zval_ptr_dtor(zval **zval_ptr ZEND_FILE_LINE_DC)
}
+ZEND_API void _zval_internal_ptr_dtor(zval **zval_ptr ZEND_FILE_LINE_DC)
+{
+#if DEBUG_ZEND>=2
+ printf("Reducing refcount for %x (%x): %d->%d\n", *zval_ptr, zval_ptr, (*zval_ptr)->refcount, (*zval_ptr)->refcount-1);
+#endif
+ (*zval_ptr)->refcount--;
+ if ((*zval_ptr)->refcount==0) {
+ zval_internal_dtor(*zval_ptr);
+ free(*zval_ptr);
+ } else if ((*zval_ptr)->refcount == 1) {
+ (*zval_ptr)->is_ref = 0;
+ }
+}
+
+
ZEND_API int zend_is_true(zval *op)
{
return i_zend_is_true(op);