}
}
+php_resource_factory_t *php_persistent_handle_resource_factory_init(
+ php_resource_factory_t *a, php_persistent_handle_factory_t *pf)
+{
+ return php_resource_factory_init(a,
+ php_persistent_handle_get_resource_factory_ops(), pf,
+ (void(*)(void*)) php_persistent_handle_abandon);
+}
+
+zend_bool php_resource_factory_is_persistent(php_resource_factory_t *a)
+{
+ return a->dtor == (void(*)(void *)) php_persistent_handle_abandon;
+}
+
static inline php_persistent_handle_list_t *php_persistent_handle_list_init(
php_persistent_handle_list_t *list)
{
zend_string *id;
ZVAL_PTR(&p, list);
- if ((GC_FLAGS(ident) & IS_STR_PERSISTENT)) {
- id = ident;
- } else {
- id = zend_string_dup(ident, 1);
- }
+ id = zend_string_init(ident->val, ident->len, 1);
rv = zend_symtable_update(&provider->list.free, id, &p);
- if (id != ident) {
- zend_string_release(id);
- }
+ zend_string_release(id);
if (rv) {
#if PHP_RAPHF_DEBUG_PHANDLES
#endif
ZVAL_PTR(&p, provider);
- if ((GC_FLAGS(name) & IS_STR_PERSISTENT)) {
- ns = name;
- } else {
- ns = zend_string_dup(name, 1);
- }
+ ns = zend_string_init(name->val, name->len, 1);
rv = zend_symtable_update(&PHP_RAPHF_G->persistent_handle.hash, ns, &p);
- if (ns != name) {
- zend_string_release(ns);
- }
+ zend_string_release(ns);
+
if (rv) {
return SUCCESS;
}