JFC, fix the merge here, too
[m6w6/ext-raphf] / php_raphf.c
index 4ce908ec0a3c92d921e600c9e84be52996e6d46d..f867af6d7a13137f17fad2d40d69a542ceb94e10 100644 (file)
@@ -115,6 +115,19 @@ void php_resource_factory_handle_dtor(php_resource_factory_t *f, void *handle)
        }
 }
 
+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)
 {
@@ -247,15 +260,9 @@ static inline php_persistent_handle_list_t *php_persistent_handle_list_find(
                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
@@ -316,15 +323,10 @@ ZEND_RESULT_CODE php_persistent_handle_provide(zend_string *name,
 #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;
                        }