mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Use zval_ptr_dtor() to free variables as soon as they hit refcount of 0.
Note: You should not be using ZVAL_DELREF() in day to day usage. Instead, you should use zval_ptr_dtor(). Use ZVAL_DELREF() only if you're messing with the refcount directly and know what you're doing. Note #2: For clarity, if you want to initialize a new zval with a refcount of 0, it's best to do that directly, instead of using ZVAL_DELREF after allocating the zval...
This commit is contained in:
parent
a2e1844de9
commit
7c710a9f9b
4 changed files with 5 additions and 5 deletions
|
@ -265,7 +265,7 @@ static void saproxy_free_storage(void *object TSRMLS_DC)
|
|||
{
|
||||
php_com_saproxy *proxy = (php_com_saproxy *)object;
|
||||
|
||||
ZVAL_DELREF(proxy->zobj);
|
||||
zval_ptr_dtor(&proxy->zobj);
|
||||
efree(proxy->indices);
|
||||
efree(proxy);
|
||||
}
|
||||
|
@ -325,7 +325,7 @@ static void saproxy_iter_dtor(zend_object_iterator *iter TSRMLS_DC)
|
|||
{
|
||||
php_com_saproxy_iter *I = (php_com_saproxy_iter*)iter->data;
|
||||
|
||||
ZVAL_DELREF(I->proxy_obj);
|
||||
zval_ptr_dtor(&I->proxy_obj);
|
||||
|
||||
efree(I->indices);
|
||||
efree(I);
|
||||
|
|
|
@ -466,7 +466,7 @@ PHP_FUNCTION(libxml_set_streams_context)
|
|||
return;
|
||||
}
|
||||
if (LIBXML(stream_context)) {
|
||||
ZVAL_DELREF(LIBXML(stream_context));
|
||||
zval_ptr_dtor(&LIBXML(stream_context));
|
||||
LIBXML(stream_context) = NULL;
|
||||
}
|
||||
ZVAL_ADDREF(arg);
|
||||
|
|
|
@ -70,7 +70,7 @@ void php_free_stmt_bind_buffer(BIND_BUFFER bbuf, int type)
|
|||
}
|
||||
}
|
||||
if (bbuf.vars[i]) {
|
||||
ZVAL_DELREF(bbuf.vars[i]);
|
||||
zval_ptr_dtor(&bbuf.vars[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -281,7 +281,7 @@ void php_add_session_var(char *name, size_t namelen TSRMLS_DC)
|
|||
zval *empty_var;
|
||||
|
||||
ALLOC_INIT_ZVAL(empty_var); /* this sets refcount to 1 */
|
||||
ZVAL_DELREF(empty_var); /* our module does not maintain a ref */
|
||||
empty_var->refcount = 0; /* our module does not maintain a ref */
|
||||
/* The next call will increase refcount by NR_OF_SYM_TABLES==2 */
|
||||
zend_set_hash_symbol(empty_var, name, namelen, 1, 2, Z_ARRVAL_P(PS(http_session_vars)), &EG(symbol_table));
|
||||
} else if (sym_global == NULL) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue