/* }}} */
-
/* {{{ mysqlnd_palloc_zval_ptr_dtor */
+static
void mysqlnd_palloc_zval_ptr_dtor(zval **zv, enum_mysqlnd_res_type type, zend_bool * copy_ctor_called TSRMLS_DC)
{
DBG_ENTER("mysqlnd_palloc_zval_ptr_dtor");
- *copy_ctor_called = FALSE;
/*
This zval is not from the cache block.
because the zvals from the cache are owned by it.
*/
if (type == MYSQLND_RES_PS_BUF || type == MYSQLND_RES_PS_UNBUF) {
+ *copy_ctor_called = FALSE;
; /* do nothing, zval_ptr_dtor will do the job*/
} else if (Z_REFCOUNT_PP(zv) > 1) {
/*
}
*copy_ctor_called = TRUE;
} else {
+ /*
+ noone but us point to this, so we can safely ZVAL_NULL the zval,
+ so Zend does not try to free what the zval points to - which is
+ in result set buffers
+ */
+ *copy_ctor_called = FALSE;
if (Z_TYPE_PP(zv) == IS_STRING) {
ZVAL_NULL(*zv);
}