summaryrefslogtreecommitdiff
path: root/Zend/zend_execute_API.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2008-05-06 16:03:16 +0000
committerDmitry Stogov <dmitry@php.net>2008-05-06 16:03:16 +0000
commit833e01343de06574271db9b0f3e2a3a5d61a89f1 (patch)
tree96a1fbee2c1f25124ab5d21b38a7a012ef49f9c0 /Zend/zend_execute_API.c
parentec4c40aa00b478ced8c344907a7578eb454f83a2 (diff)
downloadphp-git-833e01343de06574271db9b0f3e2a3a5d61a89f1.tar.gz
GC fix
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r--Zend/zend_execute_API.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index 5dcabaccbd..5aff1bde31 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -418,9 +418,13 @@ ZEND_API void _zval_ptr_dtor(zval **zval_ptr ZEND_FILE_LINE_DC) /* {{{ */
#endif
Z_DELREF_PP(zval_ptr);
if (Z_REFCOUNT_PP(zval_ptr) == 0) {
- GC_REMOVE_ZVAL_FROM_BUFFER(*zval_ptr);
- zval_dtor(*zval_ptr);
- safe_free_zval_ptr_rel(*zval_ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC);
+ TSRMLS_FETCH();
+
+ if (*zval_ptr != &EG(uninitialized_zval)) {
+ GC_REMOVE_ZVAL_FROM_BUFFER(*zval_ptr);
+ zval_dtor(*zval_ptr);
+ efree_rel(*zval_ptr);
+ }
} else {
TSRMLS_FETCH();