X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-pq;a=blobdiff_plain;f=src%2Fphp_pq_callback.c;h=695d5920dddddb8d5251703da10a3fb889009c3a;hp=6b0213f8ac5ed744ce58c4a685d419bcb5fd5149;hb=9e4e6b948aa03c04e66e808efa6a3522b92449d8;hpb=6e28a8741be3fccdaca960e492c31bc26837a4ed diff --git a/src/php_pq_callback.c b/src/php_pq_callback.c index 6b0213f..695d592 100644 --- a/src/php_pq_callback.c +++ b/src/php_pq_callback.c @@ -30,7 +30,10 @@ void php_pq_callback_dtor(php_pq_callback_t *cb) zend_fcall_info_args_clear(&cb->fci, 1); zval_ptr_dtor(&cb->fci.function_name); if (cb->fci.object) { - zend_objects_store_del(cb->fci.object); + zval tmp; + + ZVAL_OBJ(&tmp, cb->fci.object); + zval_ptr_dtor(&tmp); } cb->fci.size = 0; } @@ -62,6 +65,22 @@ zval *php_pq_callback_to_zval(php_pq_callback_t *cb, zval *tmp) return &cb->fci.function_name; } +zval *php_pq_callback_to_zval_no_addref(php_pq_callback_t *cb, zval *tmp) +{ + if (cb->fci.object) { + zval zo; + + array_init_size(tmp, 2); + ZVAL_OBJ(&zo, cb->fci.object); + add_next_index_zval(tmp, &zo); + add_next_index_zval(tmp, &cb->fci.function_name); + + return tmp; + } + + return &cb->fci.function_name; +} + zend_bool php_pq_callback_is_locked(php_pq_callback_t *cb) { /* TODO: fixed in php7?