diff options
author | Remi Collet <fedora@famillecollet.com> | 2015-05-29 07:50:43 +0200 |
---|---|---|
committer | Remi Collet <fedora@famillecollet.com> | 2015-05-29 07:50:43 +0200 |
commit | ce0a66d06336a21699992119d6a4c5453341691a (patch) | |
tree | 344a42042fbb7fb55659b9a2aef5512aa3413563 |
php-pecl-phk: build test for 3.0.0 - New Package
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | phk-pr1.patch | 36 | ||||
-rw-r--r-- | phk-pr2.patch | 1048 | ||||
-rw-r--r-- | phk-pr3.patch | 27 | ||||
-rw-r--r-- | php-pecl-phk.spec | 250 |
5 files changed, 1365 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..13af741 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +SRCDIR := $(shell pwd) +NAME := $(shell basename $(SRCDIR)) +include ../../../common/Makefile + diff --git a/phk-pr1.patch b/phk-pr1.patch new file mode 100644 index 0000000..01b1c86 --- /dev/null +++ b/phk-pr1.patch @@ -0,0 +1,36 @@ +From fcc79f64fdae2a4fa6b02dca0310aef7749501c7 Mon Sep 17 00:00:00 2001 +From: Remi Collet <fedora@famillecollet.com> +Date: Thu, 28 May 2015 17:53:39 +0200 +Subject: [PATCH] fix for PHP 5.5 + +--- + php_phk.h | 2 +- + utils.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/php_phk.h b/php_phk.h +index d938dd8..e455e26 100644 +--- a/php_phk.h ++++ b/php_phk.h +@@ -106,7 +106,7 @@ + #include "PHK_Mgr.h" + #include "PHK.h" + +-#if ZEND_EXTENSION_API_NO >= PHP_5_5_X_API_NO ++#if ZEND_EXTENSION_API_NO >= PHP_5_6_X_API_NO + #include "zend_virtual_cwd.h" + #else + #include "TSRM/tsrm_virtual_cwd.h" +diff --git a/utils.c b/utils.c +index 727aee8..7ba6c23 100644 +--- a/utils.c ++++ b/utils.c +@@ -48,7 +48,7 @@ + #include "SAPI.h" + #include "php_streams.h" + +-#if ZEND_EXTENSION_API_NO >= PHP_5_5_X_API_NO ++#if ZEND_EXTENSION_API_NO >= PHP_5_6_X_API_NO + #include "zend_virtual_cwd.h" + #else + #include "TSRM/tsrm_virtual_cwd.h" diff --git a/phk-pr2.patch b/phk-pr2.patch new file mode 100644 index 0000000..ac958a1 --- /dev/null +++ b/phk-pr2.patch @@ -0,0 +1,1048 @@ +From 3816db8b6a37921b505e621ef16e13db7ae7bceb Mon Sep 17 00:00:00 2001 +From: Remi Collet <fedora@famillecollet.com> +Date: Thu, 28 May 2015 18:40:51 +0200 +Subject: [PATCH] fix ZTS build + +--- + Automap_Class.c | 2 +- + Automap_Handlers.c | 12 ++--- + Automap_Loader.c | 6 +-- + Automap_Mnt.c | 18 +++---- + Automap_Mnt.h | 2 +- + Automap_Parser.c | 2 +- + Automap_Pmap.c | 26 +++++----- + Automap_Pmap.h | 4 +- + PHK.c | 22 ++++---- + PHK_Cache.c | 6 +-- + PHK_Mgr.c | 144 ++++++++++++++++++++++++++--------------------------- + PHK_Mgr.h | 4 +- + PHK_Stream.c | 56 ++++++++++----------- + PHK_Stream.h | 2 +- + utils.c | 40 +++++++-------- + utils.h | 20 ++++---- + 16 files changed, 181 insertions(+), 185 deletions(-) + +diff --git a/Automap_Class.c b/Automap_Class.c +index b14d102..a9edbe5 100644 +--- a/Automap_Class.c ++++ b/Automap_Class.c +@@ -36,7 +36,7 @@ static zval *Automap_map_object_by_mp(Automap_Mnt *mp TSRMLS_DC) + args[1]=flags_zp; + mp->map_object=ut_new_instance(ZEND_STRL("Automap\\Map"), YES, 2 + , args TSRMLS_CC); +- ut_ezval_ptr_dtor(&flags_zp); ++ ut_ezval_ptr_dtor(&flags_zp TSRMLS_CC); + } + + return mp->map_object; +diff --git a/Automap_Handlers.c b/Automap_Handlers.c +index 90da44c..a1f0337 100644 +--- a/Automap_Handlers.c ++++ b/Automap_Handlers.c +@@ -57,8 +57,8 @@ static void Automap_callFailureHandlers(char type, char *symbol, int slen TSRMLS + ,Z_STRLEN_P(PHK_G(automap_failureHandlers)[i]) + ,2 ,args TSRMLS_CC); + } +- ut_ezval_ptr_dtor(&ztype); +- ut_ezval_ptr_dtor(&zsymbol); ++ ut_ezval_ptr_dtor(&ztype TSRMLS_CC); ++ ut_ezval_ptr_dtor(&zsymbol TSRMLS_CC); + } + } + +@@ -103,8 +103,8 @@ static void Automap_callSuccessHandlers(Automap_Mnt *mp + ,Z_STRLEN_P(PHK_G(automap_successHandlers)[i]) + ,2,args TSRMLS_CC); + } +- ut_ezval_ptr_dtor(&entry_zp); +- ut_ezval_ptr_dtor(&id_zp); ++ ut_ezval_ptr_dtor(&entry_zp TSRMLS_CC); ++ ut_ezval_ptr_dtor(&id_zp TSRMLS_CC); + } + } + +@@ -141,7 +141,7 @@ static int RSHUTDOWN_Automap_Handlers(TSRMLS_D) + + if (PHK_G(automap_fh_count)) { + for (i=0;i<PHK_G(automap_fh_count);i++) { +- ut_ezval_ptr_dtor(PHK_G(automap_failureHandlers)+i); ++ ut_ezval_ptr_dtor(PHK_G(automap_failureHandlers)+i TSRMLS_CC); + } + EALLOCATE(PHK_G(automap_failureHandlers),0); + PHK_G(automap_fh_count)=0; +@@ -149,7 +149,7 @@ static int RSHUTDOWN_Automap_Handlers(TSRMLS_D) + + if (PHK_G(automap_sh_count)) { + for (i=0;i<PHK_G(automap_sh_count);i++) { +- ut_ezval_ptr_dtor(PHK_G(automap_successHandlers)+i); ++ ut_ezval_ptr_dtor(PHK_G(automap_successHandlers)+i TSRMLS_CC); + } + EALLOCATE(PHK_G(automap_successHandlers),0); + PHK_G(automap_sh_count)=0; +diff --git a/Automap_Loader.c b/Automap_Loader.c +index 8e8e885..24f63ac 100644 +--- a/Automap_Loader.c ++++ b/Automap_Loader.c +@@ -48,7 +48,7 @@ static void Automap_Loader_register_hook(TSRMLS_D) + MAKE_STD_ZVAL(zp); + ZVAL_STRINGL(zp,"Automap\\Mgr::autoloadHook",25,1); + ut_call_user_function_void(NULL,ZEND_STRL("spl_autoload_register"),1,&zp TSRMLS_CC); +- ut_ezval_ptr_dtor(&zp); ++ ut_ezval_ptr_dtor(&zp TSRMLS_CC); + } + + /*---------------------------------------------------------------*/ +@@ -82,7 +82,7 @@ static int Automap_resolve_symbol(char type, char *symbol, int slen, int autoloa + if (!mp) continue; + if (Automap_Mnt_resolve_key(mp, zkey, hash TSRMLS_CC)==SUCCESS) { + DBG_MSG2("Found key %s in map %d",Z_STRVAL_P(zkey),mp->id); +- ut_ezval_ptr_dtor(&zkey); ++ ut_ezval_ptr_dtor(&zkey TSRMLS_CC); + return SUCCESS; + } + } +@@ -94,7 +94,7 @@ static int Automap_resolve_symbol(char type, char *symbol, int slen, int autoloa + THROW_EXCEPTION_2("Automap: Unknown %s: %s",ts,symbol); + } + +- ut_ezval_ptr_dtor(&zkey); ++ ut_ezval_ptr_dtor(&zkey TSRMLS_CC); + return FAILURE; + } + +diff --git a/Automap_Mnt.c b/Automap_Mnt.c +index b9a6aed..28442e2 100644 +--- a/Automap_Mnt.c ++++ b/Automap_Mnt.c +@@ -20,12 +20,10 @@ + /* Here, we check every pointers because the function can be called during + the creation of the structure (load failure) */ + +-static void Automap_Mnt_dtor(Automap_Mnt *mp) ++static void Automap_Mnt_dtor(Automap_Mnt *mp TSRMLS_DC) + { +- TSRMLS_FETCH(); +- +- ut_ezval_ptr_dtor(&(mp->map_object)); +- ut_ezval_ptr_dtor(&(mp->zpath)); ++ ut_ezval_ptr_dtor(&(mp->map_object) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->zpath) TSRMLS_CC); + } + + /*---------------------------------------------------------------*/ +@@ -33,7 +31,7 @@ static void Automap_Mnt_dtor(Automap_Mnt *mp) + static void Automap_Mnt_remove(Automap_Mnt *mp TSRMLS_DC) + { + PHK_G(map_array)[mp->id]=NULL; +- Automap_Mnt_dtor(mp); ++ Automap_Mnt_dtor(mp TSRMLS_CC); + EALLOCATE(mp,0); + } + +@@ -112,7 +110,7 @@ static Automap_Mnt *Automap_Mnt_load_extended(zval *zpathp, zval *zufidp + ZVAL_STRINGL(mp->zpath,Z_STRVAL_P(zpathp),Z_STRLEN_P(zpathp),1); + mp->flags=flags; + +- Automap_Mnt_array_add(mp); ++ Automap_Mnt_array_add(mp TSRMLS_CC); + return mp; + } + +@@ -138,7 +136,7 @@ static Automap_Mnt *Automap_Mnt_load(zval *zpathp, long flags TSRMLS_DC) + ZVAL_STRINGL(zapathp, p, len, 0); + + if (!(pmp=Automap_Pmap_get_or_create(zapathp, flags TSRMLS_CC))) { +- ut_ezval_ptr_dtor(&zapathp); ++ ut_ezval_ptr_dtor(&zapathp TSRMLS_CC); + return NULL; + } + +@@ -151,7 +149,7 @@ static Automap_Mnt *Automap_Mnt_load(zval *zpathp, long flags TSRMLS_DC) + mp->zpath=zapathp; + mp->flags=flags; + +- Automap_Mnt_array_add(mp); ++ Automap_Mnt_array_add(mp TSRMLS_CC); + return mp; + } + +@@ -331,7 +329,7 @@ static int RSHUTDOWN_Automap_Mnt(TSRMLS_D) + if (PHK_G(map_count) > 1) { + for (i=1;i<PHK_G(map_count);i++) { /* Slot 0 is always NULL */ + mp=PHK_G(map_array)[i]; +- if (mp) Automap_Mnt_remove(mp); ++ if (mp) Automap_Mnt_remove(mp TSRMLS_CC); + } + } + +diff --git a/Automap_Mnt.h b/Automap_Mnt.h +index 07a4372..5e3a8dc 100644 +--- a/Automap_Mnt.h ++++ b/Automap_Mnt.h +@@ -39,7 +39,7 @@ typedef struct _Automap_Mnt { /* Per request */ + + /*============================================================================*/ + +-static void Automap_Mnt_dtor(Automap_Mnt *mp); ++static void Automap_Mnt_dtor(Automap_Mnt *mp TSRMLS_DC); + static void Automap_Mnt_remove(Automap_Mnt *mp TSRMLS_DC); + static Automap_Mnt *Automap_Mnt_get(long id, int exception TSRMLS_DC); + static PHP_METHOD(Automap, isActiveID); +diff --git a/Automap_Parser.c b/Automap_Parser.c +index b5ba3a2..38a87f4 100644 +--- a/Automap_Parser.c ++++ b/Automap_Parser.c +@@ -91,7 +91,7 @@ static void Automap_Parser_addSymbol(zval *arr,char type,char *ns,int nslen + + #define CLEANUP_AUTOMAP_PARSE_TOKENS() \ + { \ +- ut_ezval_dtor(&ztokens); \ ++ ut_ezval_dtor(&ztokens TSRMLS_CC); \ + } + + #define RETURN_FROM_AUTOMAP_PARSE_TOKENS() \ +diff --git a/Automap_Pmap.c b/Automap_Pmap.c +index 56304c4..674d4f7 100644 +--- a/Automap_Pmap.c ++++ b/Automap_Pmap.c +@@ -112,11 +112,11 @@ static Automap_Pmap *Automap_Pmap_get_or_create(zval *zapathp + /* Run extended func */ + + pmp=Automap_Pmap_get_or_create_extended(zapathp, zufidp +- , ZSTRING_HASH(zufidp), NULL, flags TSRMLS_DC); ++ , ZSTRING_HASH(zufidp), NULL, flags TSRMLS_CC); + + /* Cleanup */ + +- ut_ezval_ptr_dtor(&zufidp); ++ ut_ezval_ptr_dtor(&zufidp TSRMLS_CC); + + return pmp; + } +@@ -134,9 +134,9 @@ static Automap_Pmap *Automap_Pmap_get_or_create(zval *zapathp + + #define CLEANUP_AUTOMAP_PMAP_GET_OR_CREATE() \ + { \ +- ut_ezval_dtor(&zdata); \ +- ut_ezval_dtor(&zlong); \ +- ut_ezval_dtor(&znull); \ ++ ut_ezval_dtor(&zdata TSRMLS_CC); \ ++ ut_ezval_dtor(&zlong TSRMLS_CC); \ ++ ut_ezval_dtor(&znull TSRMLS_CC); \ + } + + #define RETURN_FROM_AUTOMAP_PMAP_GET_OR_CREATE(_ret) \ +@@ -148,7 +148,7 @@ static Automap_Pmap *Automap_Pmap_get_or_create(zval *zapathp + + #define ABORT_AUTOMAP_PMAP_GET_OR_CREATE() \ + { \ +- Automap_Pmap_dtor(&tmp_map); \ ++ Automap_Pmap_dtor(&tmp_map TSRMLS_CC); \ + RETURN_FROM_AUTOMAP_PMAP_GET_OR_CREATE(NULL); \ + } + +@@ -205,14 +205,14 @@ static Automap_Pmap *Automap_Pmap_get_or_create_extended(zval *zpathp + + ZVAL_LONG(&zlong,AUTOMAP_MAP_PROTOCOL); + args[0] = &zlong; +- ut_call_user_function_array(map,ZEND_STRL("_peclGetMap"),&zdata,1,args); ++ ut_call_user_function_array(map,ZEND_STRL("_peclGetMap"),&zdata,1,args TSRMLS_CC); + if (EG(exception)) ABORT_AUTOMAP_PMAP_GET_OR_CREATE(); + if (!ZVAL_IS_ARRAY(&zdata)) { + THROW_EXCEPTION_1("%s : Automap\\Map::_peclGetMap() should return an array",Z_STRVAL_P(zpathp)); + ABORT_AUTOMAP_PMAP_GET_OR_CREATE(); + } + +- ut_ezval_ptr_dtor(&map); /* Delete Automap_Map object */ ++ ut_ezval_ptr_dtor(&map TSRMLS_CC); /* Delete Automap_Map object */ + + /* Move data to persistent storage */ + +@@ -238,17 +238,17 @@ static Automap_Pmap *Automap_Pmap_get_or_create_extended(zval *zpathp + + /*---------------------------------------------------------------*/ + +-static void Automap_Pmap_dtor(Automap_Pmap *pmp) ++static void Automap_Pmap_dtor(Automap_Pmap *pmp TSRMLS_DC) + { +- ut_pzval_ptr_dtor(&(pmp->zsymbols)); ++ ut_pzval_ptr_dtor(&(pmp->zsymbols) TSRMLS_CC); + } + + /*---------------------------------------------------------------*/ + +-static void Automap_Pmap_Entry_dtor(Automap_Pmap_Entry *pep) ++static void Automap_Pmap_Entry_dtor(Automap_Pmap_Entry *pep TSRMLS_DC) + { +- ut_pzval_dtor(&(pep->zsname)); +- ut_pzval_dtor(&(pep->zfapath)); ++ ut_pzval_dtor(&(pep->zsname) TSRMLS_CC); ++ ut_pzval_dtor(&(pep->zfapath) TSRMLS_CC); + } + + /*---------------------------------------------------------------*/ +diff --git a/Automap_Pmap.h b/Automap_Pmap.h +index 95ac6aa..080383d 100644 +--- a/Automap_Pmap.h ++++ b/Automap_Pmap.h +@@ -51,8 +51,8 @@ static Automap_Pmap *Automap_Pmap_get_or_create(zval *zapathp + , long flags TSRMLS_DC); + static Automap_Pmap *Automap_Pmap_get_or_create_extended(zval *zpathp + , zval *zufidp, ulong hash, zval *zbasePathp_arg, long flags TSRMLS_DC); +-static void Automap_Pmap_dtor(Automap_Pmap *pmp); +-static void Automap_Pmap_Entry_dtor(Automap_Pmap_Entry *pep); ++static void Automap_Pmap_dtor(Automap_Pmap *pmp TSRMLS_DC); ++static void Automap_Pmap_Entry_dtor(Automap_Pmap_Entry *pep TSRMLS_DC); + static Automap_Pmap_Entry *Automap_Pmap_find_key(Automap_Pmap *pmp + , zval *zkey, ulong hash TSRMLS_DC); + static void Automap_Pmap_exportEntry(Automap_Pmap_Entry *pep, zval *zp TSRMLS_DC); +diff --git a/PHK.c b/PHK.c +index 40bcbeb..128df2b 100644 +--- a/PHK.c ++++ b/PHK.c +@@ -147,7 +147,7 @@ static PHP_METHOD(PHK, setCache) + FAILURE) EXCEPTION_ABORT("Cannot parse parameters"); + + SEPARATE_ARG_IF_REF(zp); +- ut_ezval_ptr_dtor(&(mp->caching)); ++ ut_ezval_ptr_dtor(&(mp->caching) TSRMLS_CC); + mp->caching = zp; + } + +@@ -203,7 +203,7 @@ static int PHK_cacheEnabled(PHK_Mnt * mp, zval * command, + + static void PHK_umount(PHK_Mnt * mp TSRMLS_DC) + { +- if (mp->plugin) ut_ezval_ptr_dtor(&(mp->plugin)); ++ if (mp->plugin) ut_ezval_ptr_dtor(&(mp->plugin) TSRMLS_CC); + + if (mp->umount_script_uri + && (!(Z_LVAL_P(mp->flags) & PHK_FLAG_NO_MOUNT_SCRIPT))) { +@@ -212,7 +212,7 @@ static void PHK_umount(PHK_Mnt * mp TSRMLS_DC) + } + + if (mp->automapURI) { +- Automap_unload(mp->automapID); ++ Automap_unload(mp->automapID TSRMLS_CC); + } + } + +@@ -409,7 +409,7 @@ static char *gotoMain(PHK_Mnt * mp TSRMLS_DC) + MAKE_STD_ZVAL(zp); + PHK_Mgr_uri(mp->mnt, mp->web_run_script, zp TSRMLS_CC); + spprintf(&p, 1024, "require('%s');", Z_STRVAL_P(zp)); +- ut_ezval_ptr_dtor(&zp); ++ ut_ezval_ptr_dtor(&zp TSRMLS_CC); + } + return p; + } +@@ -419,8 +419,8 @@ static char *gotoMain(PHK_Mnt * mp TSRMLS_DC) + + #define CLEANUP_WEB_TUNNEL() \ + { \ +- ut_ezval_ptr_dtor(&tpath); \ +- ut_ezval_ptr_dtor(&uri); \ ++ ut_ezval_ptr_dtor(&tpath TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&uri TSRMLS_CC); \ + } + + static char *webTunnel(PHK_Mnt * mp, zval * path, +@@ -563,7 +563,7 @@ static void PHK_mimeHeader(PHK_Mnt * mp, zval * path TSRMLS_DC) + EALLOCATE(p,0); + } + +- ut_ezval_ptr_dtor(&type); ++ ut_ezval_ptr_dtor(&type TSRMLS_CC); + } + + /*---------------------------------------------------------------*/ +@@ -592,7 +592,7 @@ static void PHK_mimeType(zval *ret, PHK_Mnt * mp, zval * path TSRMLS_DC) + { + zval *suffix, **zpp; + +- ut_ezval_dtor(ret); ++ ut_ezval_dtor(ret TSRMLS_CC); + INIT_PZVAL(ret); + + ALLOC_INIT_ZVAL(suffix); +@@ -617,7 +617,7 @@ static void PHK_mimeType(zval *ret, PHK_Mnt * mp, zval * path TSRMLS_DC) + } + } + +- ut_ezval_ptr_dtor(&suffix); ++ ut_ezval_ptr_dtor(&suffix TSRMLS_CC); + } + + /*---------------------------------------------------------------*/ +@@ -650,7 +650,7 @@ static int PHK_isPHPSourcePath(PHK_Mnt * mp, zval * path TSRMLS_DC) + if (ZVAL_IS_STRING(type) && (Z_STRLEN_P(type)==23) + && (!memcmp(Z_STRVAL_P(type),"application/x-httpd-php",23))) res=1; + +- ut_ezval_ptr_dtor(&type); ++ ut_ezval_ptr_dtor(&type TSRMLS_CC); + return res; + } + +@@ -1043,7 +1043,7 @@ static inline void init_mimeTable(TSRMLS_D) + + static void shutdown_mimeTable(TSRMLS_D) + { +- ut_ezval_ptr_dtor(&PHK_G(mimeTable)); ++ ut_ezval_ptr_dtor(&PHK_G(mimeTable) TSRMLS_CC); + } + + /*---------------------------------------------------------------*/ +diff --git a/PHK_Cache.c b/PHK_Cache.c +index 69354d3..f9b9fdd 100644 +--- a/PHK_Cache.c ++++ b/PHK_Cache.c +@@ -114,7 +114,7 @@ static void PHK_Cache_cacheID(const char *prefix, int prefix_len, const char *ke + memmove(p + prefix_len + 9, key, key_len); + p[prefix_len + key_len + 9] = '\0'; + +- ut_ezval_dtor(z_ret_p); ++ ut_ezval_dtor(z_ret_p TSRMLS_CC); + ZVAL_STRINGL(z_ret_p, p, len, 0); + } + +@@ -154,7 +154,7 @@ static PHP_METHOD(PHK_Cache, setCacheMaxSize) + + static void PHK_Cache_get(zval * z_key_p, zval * z_ret_p TSRMLS_DC) + { +- ut_ezval_dtor(z_ret_p); ++ ut_ezval_dtor(z_ret_p TSRMLS_CC); + + if (!cache) return; + +@@ -220,7 +220,7 @@ static void PHK_Cache_set(zval * z_key_p, zval * z_data_p TSRMLS_DC) + ut_call_user_function_void(NULL, cache->set_funcname_string + ,cache->set_funcname_len, 3, args TSRMLS_CC); + +- ut_ezval_ptr_dtor(&ttl); ++ ut_ezval_ptr_dtor(&ttl TSRMLS_CC); + } + } + +diff --git a/PHK_Mgr.c b/PHK_Mgr.c +index 3b2e70b..66c7935 100644 +--- a/PHK_Mgr.c ++++ b/PHK_Mgr.c +@@ -44,13 +44,11 @@ static void PHK_Mgr_shutdown_pdata(TSRMLS_D) + ut_ezval_ptr_dtor() handles this case. + */ + +-static void PHK_Mgr_mnt_dtor(PHK_Mnt * mp) ++static void PHK_Mgr_mnt_dtor(PHK_Mnt * mp TSRMLS_DC) + { +- TSRMLS_FETCH(); +- + EALLOCATE(mp->children,0); + +- ut_ezval_ptr_dtor(&(mp->mnt)); ++ ut_ezval_ptr_dtor(&(mp->mnt) TSRMLS_CC); + + if (mp->instance) /* Invalidate object */ + { +@@ -58,31 +56,31 @@ static void PHK_Mgr_mnt_dtor(PHK_Mnt * mp) + ,sizeof(PHK_MP_PROPERTY_NAME)); + } + +- ut_ezval_ptr_dtor(&(mp->instance)); +- ut_ezval_ptr_dtor(&(mp->proxy)); +- ut_ezval_ptr_dtor(&(mp->path)); +- ut_ezval_ptr_dtor(&(mp->plugin)); +- ut_ezval_ptr_dtor(&(mp->flags)); +- ut_ezval_ptr_dtor(&(mp->caching)); +- ut_ezval_ptr_dtor(&(mp->mtime)); +- ut_ezval_ptr_dtor(&(mp->backend)); +- +- ut_ezval_ptr_dtor(&(mp->minVersion)); +- ut_ezval_ptr_dtor(&(mp->options)); +- ut_ezval_ptr_dtor(&(mp->buildInfo)); +- ut_ezval_ptr_dtor(&(mp->mime_types)); +- ut_ezval_ptr_dtor(&(mp->web_run_script)); +- ut_ezval_ptr_dtor(&(mp->plugin_class)); +- ut_ezval_ptr_dtor(&(mp->web_access)); +- ut_ezval_ptr_dtor(&(mp->min_php_version)); +- ut_ezval_ptr_dtor(&(mp->max_php_version)); +- +- ut_ezval_ptr_dtor(&(mp->baseURI)); +- ut_ezval_ptr_dtor(&(mp->automapURI)); +- ut_ezval_ptr_dtor(&(mp->mount_script_uri)); +- ut_ezval_ptr_dtor(&(mp->umount_script_uri)); +- ut_ezval_ptr_dtor(&(mp->lib_run_script_uri)); +- ut_ezval_ptr_dtor(&(mp->cli_run_command)); ++ ut_ezval_ptr_dtor(&(mp->instance) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->proxy) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->path) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->plugin) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->flags) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->caching) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->mtime) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->backend) TSRMLS_CC); ++ ++ ut_ezval_ptr_dtor(&(mp->minVersion) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->options) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->buildInfo) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->mime_types) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->web_run_script) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->plugin_class) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->web_access) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->min_php_version) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->max_php_version) TSRMLS_CC); ++ ++ ut_ezval_ptr_dtor(&(mp->baseURI) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->automapURI) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->mount_script_uri) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->umount_script_uri) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->lib_run_script_uri) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&(mp->cli_run_command) TSRMLS_CC); + } + + /*---------------------------------------------------------------*/ +@@ -774,19 +772,19 @@ static void PHK_Mgr_pathToMnt(zval * path, zval * mnt TSRMLS_DC) + tmp_mnt=NULL; + PHK_Mgr_computeMnt(path, NULL, &tmp_mnt, NULL TSRMLS_CC); + if (EG(exception)) { +- ut_ezval_ptr_dtor(&tmp_mnt); ++ ut_ezval_ptr_dtor(&tmp_mnt TSRMLS_CC); + return; + } + + PHK_Mgr_get_mnt(tmp_mnt, 0, 1 TSRMLS_CC); + if (EG(exception)) { +- ut_ezval_ptr_dtor(&tmp_mnt); ++ ut_ezval_ptr_dtor(&tmp_mnt TSRMLS_CC); + return; + } + + ZVAL_COPY_VALUE(mnt,tmp_mnt); + zval_copy_ctor(mnt); +- ut_ezval_ptr_dtor(&tmp_mnt); ++ ut_ezval_ptr_dtor(&tmp_mnt TSRMLS_CC); + } + + /*---------------------------------------------------------------*/ +@@ -904,8 +902,8 @@ static long PHK_Mgr_mount_from_Automap(zval * path, long flags TSRMLS_DC) + + #define CLEANUP_PHK_MGR_MOUNT() \ + { \ +- ut_ezval_ptr_dtor(&mnt); \ +- ut_ezval_ptr_dtor(&mtime); \ ++ ut_ezval_ptr_dtor(&mnt TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&mtime TSRMLS_CC); \ + } + + #define RETURN_FROM_PHK_MGR_MOUNT(_ret) \ +@@ -1078,9 +1076,9 @@ static PHK_Pdata *PHK_Mgr_get_pdata( + + #define CLEANUP_PHK_GET_OR_CREATE_PERSISTENT_DATA() \ + { \ +- ut_ezval_ptr_dtor(&minVersion); \ +- ut_ezval_ptr_dtor(&options); \ +- ut_ezval_ptr_dtor(&buildInfo); \ ++ ut_ezval_ptr_dtor(&minVersion TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&options TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&buildInfo TSRMLS_CC); \ + } + + #define RETURN_FROM_PHK_GET_OR_CREATE_PERSISTENT_DATA(_ret) \ +@@ -1127,7 +1125,7 @@ static PHK_Pdata *PHK_Mgr_get_or_create_pdata(zval * mnt, + args[1] = ztmp; + ut_call_user_function_string(NULL + , ZEND_STRL("PHK\\Tools\\Util::getMinVersion"), minVersion,2, args TSRMLS_CC); +- ut_ezval_ptr_dtor(&ztmp); ++ ut_ezval_ptr_dtor(&ztmp TSRMLS_CC); + if (EG(exception)) ABORT_PHK_GET_OR_CREATE_PERSISTENT_DATA(); + + /* Check minVersion */ +@@ -1142,7 +1140,7 @@ static PHK_Pdata *PHK_Mgr_get_or_create_pdata(zval * mnt, + args[1] = ztmp; + ut_call_user_function_array(NULL + , ZEND_STRL("PHK\\Tools\\Util::getOptions"), options, 2, args TSRMLS_CC); +- ut_ezval_ptr_dtor(&ztmp); ++ ut_ezval_ptr_dtor(&ztmp TSRMLS_CC); + if (EG(exception)) ABORT_PHK_GET_OR_CREATE_PERSISTENT_DATA(); + + /* Check that the required extensions are present or can be loaded */ +@@ -1183,14 +1181,14 @@ static PHK_Pdata *PHK_Mgr_get_or_create_pdata(zval * mnt, + + entry->ctime = time(NULL); + +- entry->minVersion=ut_persist_zval(minVersion); ++ entry->minVersion=ut_persist_zval(minVersion TSRMLS_CC); + +- entry->options=ut_persist_zval(options); ++ entry->options=ut_persist_zval(options TSRMLS_CC); + opt_ht = Z_ARRVAL_P(entry->options); + + ut_call_user_function_array(NULL + , ZEND_STRL("PHK\\Tools\\Util::getBuildInfo"), buildInfo, 2, args TSRMLS_CC); +- entry->buildInfo=ut_persist_zval(buildInfo); ++ entry->buildInfo=ut_persist_zval(buildInfo TSRMLS_CC); + + /* Set shortcuts */ + +@@ -1234,39 +1232,39 @@ static PHK_Pdata *PHK_Mgr_get_or_create_pdata(zval * mnt, + + ALLOC_INIT_ZVAL(ztmp); + compute_baseURI(mnt, ztmp TSRMLS_CC); +- entry->baseURI=ut_persist_zval(ztmp); +- ut_ezval_ptr_dtor(&ztmp); ++ entry->baseURI=ut_persist_zval(ztmp TSRMLS_CC); ++ ut_ezval_ptr_dtor(&ztmp TSRMLS_CC); + + if ((FIND_HKEY(Z_ARRVAL_P(entry->buildInfo), map_defined, &zpp) == + SUCCESS) && ZVAL_IS_BOOL(*zpp) && Z_BVAL_PP(zpp)) { + ALLOC_INIT_ZVAL(ztmp); + compute_automapURI(mnt, ztmp TSRMLS_CC); +- entry->automapURI=ut_persist_zval(ztmp); +- ut_ezval_ptr_dtor(&ztmp); ++ entry->automapURI=ut_persist_zval(ztmp TSRMLS_CC); ++ ut_ezval_ptr_dtor(&ztmp TSRMLS_CC); + } + + if ((FIND_HKEY(opt_ht, mount_script, &zpp) == SUCCESS) + && (ZVAL_IS_STRING(*zpp))) { + ALLOC_INIT_ZVAL(ztmp); + PHK_Mgr_uri(mnt, *zpp, ztmp TSRMLS_CC); +- entry->mount_script_uri=ut_persist_zval(ztmp); +- ut_ezval_ptr_dtor(&ztmp); ++ entry->mount_script_uri=ut_persist_zval(ztmp TSRMLS_CC); ++ ut_ezval_ptr_dtor(&ztmp TSRMLS_CC); + } + + if ((FIND_HKEY(opt_ht, umount_script, &zpp) == SUCCESS) + && (ZVAL_IS_STRING(*zpp))) { + ALLOC_INIT_ZVAL(ztmp); + PHK_Mgr_uri(mnt, *zpp, ztmp TSRMLS_CC); +- entry->umount_script_uri=ut_persist_zval(ztmp); +- ut_ezval_ptr_dtor(&ztmp); ++ entry->umount_script_uri=ut_persist_zval(ztmp TSRMLS_CC); ++ ut_ezval_ptr_dtor(&ztmp TSRMLS_CC); + } + + if ((FIND_HKEY(opt_ht, lib_run_script, &zpp) == SUCCESS) + && (ZVAL_IS_STRING(*zpp))) { + ALLOC_INIT_ZVAL(ztmp); + PHK_Mgr_uri(mnt, *zpp, ztmp TSRMLS_CC); +- entry->lib_run_script_uri=ut_persist_zval(ztmp); +- ut_ezval_ptr_dtor(&ztmp); ++ entry->lib_run_script_uri=ut_persist_zval(ztmp TSRMLS_CC); ++ ut_ezval_ptr_dtor(&ztmp TSRMLS_CC); + } + + if ((FIND_HKEY(opt_ht, cli_run_script, &zpp) == SUCCESS) +@@ -1276,9 +1274,9 @@ static PHK_Pdata *PHK_Mgr_get_or_create_pdata(zval * mnt, + PHK_Mgr_uri(mnt, *zpp, ztmp TSRMLS_CC); + spprintf(&p, UT_PATH_MAX, "require('%s');", Z_STRVAL_P(ztmp)); + ZVAL_STRING(ztmp2, p, 0); +- entry->cli_run_command=ut_persist_zval(ztmp2); +- ut_ezval_ptr_dtor(&ztmp); +- ut_ezval_ptr_dtor(&ztmp2); ++ entry->cli_run_command=ut_persist_zval(ztmp2 TSRMLS_CC); ++ ut_ezval_ptr_dtor(&ztmp TSRMLS_CC); ++ ut_ezval_ptr_dtor(&ztmp2 TSRMLS_CC); + } + + /* Cleanup and return */ +@@ -1360,26 +1358,26 @@ static PHP_METHOD(PHK_Mgr, mimeHeader) + /*---------------------------------------------------------------*/ + /* zval_dtor works for persistent arrays, but not for persistent strings */ + +-static void PHK_Mgr_Persistent_Data_dtor(PHK_Pdata * entry) ++static void PHK_Mgr_Persistent_Data_dtor(PHK_Pdata * entry TSRMLS_DC) + { +- ut_pzval_ptr_dtor(&(entry->minVersion)); ++ ut_pzval_ptr_dtor(&(entry->minVersion) TSRMLS_CC); + /* TODO: Why do these two lines cause free() errors ? */ +- ut_pzval_ptr_dtor(&(entry->options)); +- ut_pzval_ptr_dtor(&(entry->buildInfo)); +- +- ut_pzval_ptr_dtor(&(entry->mime_types)); +- ut_pzval_ptr_dtor(&(entry->web_run_script)); +- ut_pzval_ptr_dtor(&(entry->plugin_class)); +- ut_pzval_ptr_dtor(&(entry->web_access)); +- ut_pzval_ptr_dtor(&(entry->min_php_version)); +- ut_pzval_ptr_dtor(&(entry->max_php_version)); +- +- ut_pzval_ptr_dtor(&(entry->baseURI)); +- ut_pzval_ptr_dtor(&(entry->automapURI)); +- ut_pzval_ptr_dtor(&(entry->mount_script_uri)); +- ut_pzval_ptr_dtor(&(entry->umount_script_uri)); +- ut_pzval_ptr_dtor(&(entry->lib_run_script_uri)); +- ut_pzval_ptr_dtor(&(entry->cli_run_command)); ++ ut_pzval_ptr_dtor(&(entry->options) TSRMLS_CC); ++ ut_pzval_ptr_dtor(&(entry->buildInfo) TSRMLS_CC); ++ ++ ut_pzval_ptr_dtor(&(entry->mime_types) TSRMLS_CC); ++ ut_pzval_ptr_dtor(&(entry->web_run_script) TSRMLS_CC); ++ ut_pzval_ptr_dtor(&(entry->plugin_class) TSRMLS_CC); ++ ut_pzval_ptr_dtor(&(entry->web_access) TSRMLS_CC); ++ ut_pzval_ptr_dtor(&(entry->min_php_version) TSRMLS_CC); ++ ut_pzval_ptr_dtor(&(entry->max_php_version) TSRMLS_CC); ++ ++ ut_pzval_ptr_dtor(&(entry->baseURI) TSRMLS_CC); ++ ut_pzval_ptr_dtor(&(entry->automapURI) TSRMLS_CC); ++ ut_pzval_ptr_dtor(&(entry->mount_script_uri) TSRMLS_CC); ++ ut_pzval_ptr_dtor(&(entry->umount_script_uri) TSRMLS_CC); ++ ut_pzval_ptr_dtor(&(entry->lib_run_script_uri) TSRMLS_CC); ++ ut_pzval_ptr_dtor(&(entry->cli_run_command) TSRMLS_CC); + } + + /*---------------------------------------------------------------*/ +diff --git a/PHK_Mgr.h b/PHK_Mgr.h +index 4e17630..2832ba3 100644 +--- a/PHK_Mgr.h ++++ b/PHK_Mgr.h +@@ -129,7 +129,7 @@ StaticMutexDeclare(persistent_mtab); + + static void PHK_Mgr_init_pdata(TSRMLS_D); + static void PHK_Mgr_shutdown_pdata(TSRMLS_D); +-static void PHK_Mgr_mnt_dtor(PHK_Mnt * mp); ++static void PHK_Mgr_mnt_dtor(PHK_Mnt * mp TSRMLS_DC); + static void PHK_Mgr_remove_mnt(PHK_Mnt * mp TSRMLS_DC); + static PHK_Mnt *PHK_Mgr_new_mnt(zval * mnt, ulong hash TSRMLS_DC); + static PHK_Mnt *PHK_Mgr_get_mnt(zval * mnt, ulong hash, +@@ -185,7 +185,7 @@ static PHK_Pdata *PHK_Mgr_get_pdata(zval * mnt, ulong hash TSRMLS_DC); + static PHK_Pdata *PHK_Mgr_get_or_create_pdata(zval * mnt,ulong hash TSRMLS_DC); + static void PHK_Mgr_populate_pdata(zval * mnt, ulong hash,PHK_Mnt * mp TSRMLS_DC); + static PHP_METHOD(PHK_Mgr, mimeHeader); +-static void PHK_Mgr_Persistent_Data_dtor(PHK_Pdata * entry); ++static void PHK_Mgr_Persistent_Data_dtor(PHK_Pdata * entry TSRMLS_DC); + + static int MINIT_PHK_Mgr(TSRMLS_D); + static int MSHUTDOWN_PHK_Mgr(TSRMLS_D); +diff --git a/PHK_Stream.c b/PHK_Stream.c +index e8af86d..30a5823 100644 +--- a/PHK_Stream.c ++++ b/PHK_Stream.c +@@ -40,15 +40,15 @@ static PHK_STREAM_DATA *new_dp(int show_errors) + + /*--------------------*/ + +-static void free_dp(PHK_STREAM_DATA ** dpp) ++static void free_dp(PHK_STREAM_DATA ** dpp TSRMLS_DC) + { + if ((!dpp) || (!(*dpp))) return; + +- ut_ezval_ptr_dtor(&((*dpp)->z_command)); +- ut_ezval_ptr_dtor(&((*dpp)->z_params)); +- ut_ezval_ptr_dtor(&((*dpp)->z_mnt)); +- ut_ezval_ptr_dtor(&((*dpp)->z_path)); +- ut_ezval_ptr_dtor(&((*dpp)->z_data)); ++ ut_ezval_ptr_dtor(&((*dpp)->z_command) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&((*dpp)->z_params) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&((*dpp)->z_mnt) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&((*dpp)->z_path) TSRMLS_CC); ++ ut_ezval_ptr_dtor(&((*dpp)->z_data) TSRMLS_CC); + + EALLOCATE(*dpp,0); + } +@@ -91,7 +91,7 @@ static int is_last_cached_opcode(const char *path, int len TSRMLS_DC) + + #define INIT_PHK_STREAM_GET_FILE() \ + { \ +- ut_ezval_dtor(ret_p); \ ++ ut_ezval_dtor(ret_p TSRMLS_CC); \ + ALLOC_INIT_ZVAL(key); \ + ALLOC_INIT_ZVAL(can_cache); \ + ALLOC_INIT_ZVAL(tmp); \ +@@ -99,15 +99,15 @@ static int is_last_cached_opcode(const char *path, int len TSRMLS_DC) + + #define CLEANUP_PHK_STREAM_GET_FILE() \ + { \ +- ut_ezval_ptr_dtor(&key); \ +- ut_ezval_ptr_dtor(&can_cache); \ +- ut_ezval_ptr_dtor(&tmp); \ ++ ut_ezval_ptr_dtor(&key TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&can_cache TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&tmp TSRMLS_CC); \ + } + + #define ABORT_PHK_STREAM_GET_FILE() \ + { \ + CLEANUP_PHK_STREAM_GET_FILE(); \ +- ut_ezval_dtor(ret_p); \ ++ ut_ezval_dtor(ret_p TSRMLS_CC); \ + return; \ + } + +@@ -226,7 +226,7 @@ static int PHK_Stream_close(php_stream * stream, + { + PHK_STREAM_DATA *dp = stream->abstract; + +- free_dp(&dp); ++ free_dp(&dp TSRMLS_CC); + + return 0; + } +@@ -288,15 +288,15 @@ static int PHK_Stream_seek(php_stream * stream, off_t offset, int whence, + + #define CLEANUP_PHK_STREAM_DO_STAT() \ + { \ +- ut_ezval_ptr_dtor(&z_key); \ +- ut_ezval_ptr_dtor(&z_cache); \ +- ut_ezval_ptr_dtor(&z_tmp); \ +- ut_ezval_ptr_dtor(&z_tmp_a); \ +- ut_ezval_ptr_dtor(&z_ssb); \ +- ut_ezval_ptr_dtor(&z_uri); \ +- ut_ezval_ptr_dtor(&z_mode); \ +- ut_ezval_ptr_dtor(&z_size); \ +- ut_ezval_ptr_dtor(&z_mtime); \ ++ ut_ezval_ptr_dtor(&z_key TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&z_cache TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&z_tmp TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&z_tmp_a TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&z_ssb TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&z_uri TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&z_mode TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&z_size TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&z_mtime TSRMLS_CC); \ + } + + #define ABORT_PHK_STREAM_DO_STAT() \ +@@ -535,10 +535,10 @@ static php_stream_ops phk_dirops = { + + #define CLEANUP_PHK_STREAM_OPEN() \ + { \ +- ut_ezval_ptr_dtor(&z_key); \ +- ut_ezval_ptr_dtor(&z_cache); \ +- ut_ezval_ptr_dtor(&z_tmp); \ +- ut_ezval_ptr_dtor(&z_uri); \ ++ ut_ezval_ptr_dtor(&z_key TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&z_cache TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&z_tmp TSRMLS_CC); \ ++ ut_ezval_ptr_dtor(&z_uri TSRMLS_CC); \ + } + + #define ABORT_PHK_STREAM_OPEN() \ +@@ -546,7 +546,7 @@ static php_stream_ops phk_dirops = { + DBG_MSG("Aborting generic_open()"); \ + zend_clear_exception(TSRMLS_C); \ + CLEANUP_PHK_STREAM_OPEN(); \ +- free_dp(&dp); \ ++ free_dp(&dp TSRMLS_CC); \ + return NULL; \ + } + +@@ -654,7 +654,7 @@ static int PHK_Stream_url_stat(php_stream_wrapper *wrapper, const char *uri, + + dp = new_dp((flags & PHP_STREAM_URL_STAT_QUIET) ? 0 : REPORT_ERRORS); + retval = do_stat(wrapper, uri, dp, ssb TSRMLS_CC); +- free_dp(&dp); ++ free_dp(&dp TSRMLS_CC); + + return retval; + } +@@ -830,7 +830,7 @@ static char *PHK_Stream_cache_key(php_stream_wrapper * wrapper, + (*mnt_end) = '/'; + + mp = PHK_Mgr_get_mnt(mnt, 0, 0 TSRMLS_CC); +- ut_ezval_ptr_dtor(&mnt); ++ ut_ezval_ptr_dtor(&mnt TSRMLS_CC); + if ((!mp) || mp->no_opcode_cache) return NULL; + + set_last_cached_opcode(uri, uri_len TSRMLS_CC); +diff --git a/PHK_Stream.h b/PHK_Stream.h +index 4804831..a6369b6 100644 +--- a/PHK_Stream.h ++++ b/PHK_Stream.h +@@ -38,7 +38,7 @@ static int last_cached_opcode_len; + /*============================================================================*/ + + static PHK_STREAM_DATA *new_dp(int show_errors); +-static void free_dp(PHK_STREAM_DATA ** dpp); ++static void free_dp(PHK_STREAM_DATA ** dpp TSRMLS_DC); + static void clear_last_cached_opcode(TSRMLS_D); + static void set_last_cached_opcode(const char *path, int len TSRMLS_DC); + static int is_last_cached_opcode(const char *path, int len TSRMLS_DC); +diff --git a/utils.c b/utils.c +index 727aee8..c405ef9 100644 +--- a/utils.c ++++ b/utils.c +@@ -260,7 +260,7 @@ UT_SYMBOL void ut_decref(zval *zp) + /*---------*/ + /* Free zval content and reset it */ + +-UT_SYMBOL void ut_pezval_dtor(zval *zp, int persistent) ++UT_SYMBOL void ut_pezval_dtor(zval *zp, int persistent TSRMLS_DC) + { + if (persistent) { + switch (Z_TYPE_P(zp) & IS_CONSTANT_TYPE_MASK) { +@@ -283,20 +283,20 @@ UT_SYMBOL void ut_pezval_dtor(zval *zp, int persistent) + + /*---------*/ + +-UT_SYMBOL void ut_ezval_dtor(zval *zp) { ut_pezval_dtor(zp,0); } +-UT_SYMBOL void ut_pzval_dtor(zval *zp) { ut_pezval_dtor(zp,1); } ++UT_SYMBOL void ut_ezval_dtor(zval *zp TSRMLS_DC) { ut_pezval_dtor(zp,0 TSRMLS_CC); } ++UT_SYMBOL void ut_pzval_dtor(zval *zp TSRMLS_DC) { ut_pezval_dtor(zp,1 TSRMLS_CC); } + + /*---------*/ + /* clear the zval pointer */ + +-UT_SYMBOL void ut_pezval_ptr_dtor(zval ** zpp, int persistent) ++UT_SYMBOL void ut_pezval_ptr_dtor(zval ** zpp, int persistent TSRMLS_DC) + { + if (*zpp) { + if (persistent) { + ut_decref(*zpp); + /* php_printf("Reference count = %d\n",Z_REFCOUNT_PP(zpp)); */ + if (Z_REFCOUNT_PP(zpp) == 0) { +- ut_pzval_dtor(*zpp); ++ ut_pzval_dtor(*zpp TSRMLS_CC); + GC_REMOVE_ZVAL_FROM_BUFFER(*zpp); + ut_pallocate(*zpp, 0); + } +@@ -309,12 +309,12 @@ UT_SYMBOL void ut_pezval_ptr_dtor(zval ** zpp, int persistent) + + /*---------*/ + +-UT_SYMBOL void ut_ezval_ptr_dtor(zval **zpp) { ut_pezval_ptr_dtor(zpp,0); } +-UT_SYMBOL void ut_pzval_ptr_dtor(zval **zpp) { ut_pezval_ptr_dtor(zpp,1); } ++UT_SYMBOL void ut_ezval_ptr_dtor(zval **zpp TSRMLS_DC) { ut_pezval_ptr_dtor(zpp,0 TSRMLS_CC); } ++UT_SYMBOL void ut_pzval_ptr_dtor(zval **zpp TSRMLS_DC) { ut_pezval_ptr_dtor(zpp,1 TSRMLS_CC); } + + /*---------*/ + +-UT_SYMBOL void ut_persistent_array_init(zval * zp) ++UT_SYMBOL void ut_persistent_array_init(zval * zp TSRMLS_DC) + { + HashTable *htp; + +@@ -326,16 +326,16 @@ UT_SYMBOL void ut_persistent_array_init(zval * zp) + + /*---------*/ + +-UT_SYMBOL void ut_persistent_copy_ctor(zval ** ztpp) ++UT_SYMBOL void ut_persistent_copy_ctor(zval ** ztpp TSRMLS_DC) + { +- *ztpp=ut_persist_zval(*ztpp); ++ *ztpp=ut_persist_zval(*ztpp TSRMLS_CC); + } + + /*---------*/ + /* Duplicates a zval and all its descendants to persistent storage */ + /* Does not support objects and resources */ + +-UT_SYMBOL zval *ut_persist_zval(zval * zsp) ++UT_SYMBOL zval *ut_persist_zval(zval * zsp TSRMLS_DC) + { + int type, len; + char *p; +@@ -354,7 +354,7 @@ UT_SYMBOL zval *ut_persist_zval(zval * zsp) + + case IS_ARRAY: + case IS_CONSTANT_ARRAY: +- ut_persistent_array_init(ztp); ++ ut_persistent_array_init(ztp TSRMLS_CC); + zend_hash_copy(Z_ARRVAL_P(ztp), Z_ARRVAL_P(zsp) + , (copy_ctor_func_t) ut_persistent_copy_ctor, + NULL, sizeof(zval *)); +@@ -408,7 +408,7 @@ UT_SYMBOL void ut_call_user_function_void(zval *obj_zp, char *func, + + ALLOC_INIT_ZVAL(ret); + ut_call_user_function(obj_zp, func, func_len, ret, nb_args, args TSRMLS_CC); +- ut_ezval_ptr_dtor(&ret); /* Discard return value */ ++ ut_ezval_ptr_dtor(&ret TSRMLS_CC); /* Discard return value */ + } + + /*---------------------------------------------------------------*/ +@@ -422,7 +422,7 @@ UT_SYMBOL int ut_call_user_function_bool(zval * obj_zp, char *func, + ALLOC_INIT_ZVAL(ret); + ut_call_user_function(obj_zp, func, func_len, ret, nb_args, args TSRMLS_CC); + result = zend_is_true(ret); +- ut_ezval_ptr_dtor(&ret); ++ ut_ezval_ptr_dtor(&ret TSRMLS_CC); + + return result; + } +@@ -440,7 +440,7 @@ UT_SYMBOL long ut_call_user_function_long(zval *obj_zp, char *func, + + ENSURE_LONG(ret); + result=Z_LVAL_P(ret); +- ut_ezval_ptr_dtor(&ret); ++ ut_ezval_ptr_dtor(&ret TSRMLS_CC); + + return result; + } +@@ -518,11 +518,11 @@ and 5.3.9 */ + + status=call_user_function(EG(function_table), &obj_zp, func_zp, ret, nb_args, + args TSRMLS_CC); +- ut_ezval_ptr_dtor(&func_zp); ++ ut_ezval_ptr_dtor(&func_zp TSRMLS_CC); + + #if ZEND_MODULE_API_NO <= 20050922 + if (clen) { +- ut_ezval_ptr_dtor(&obj_zp); ++ ut_ezval_ptr_dtor(&obj_zp TSRMLS_CC); + } + #endif + +@@ -572,7 +572,7 @@ UT_SYMBOL void ut_loadExtension(char *name, int len TSRMLS_DC) + + ut_loadExtension_file(zp TSRMLS_CC); + +- ut_ezval_ptr_dtor(&zp); ++ ut_ezval_ptr_dtor(&zp TSRMLS_CC); + } + + /*---------------------------------------------------------------*/ +@@ -865,7 +865,7 @@ UT_SYMBOL void ut_unserialize_zval(const unsigned char *buffer + + INIT_ZVAL(*ret); + if (!php_var_unserialize(&ret,&buffer,buffer+len,&var_hash TSRMLS_CC)) { +- ut_ezval_dtor(ret); ++ ut_ezval_dtor(ret TSRMLS_CC); + THROW_EXCEPTION("Unserialize error"); + } + PHP_VAR_UNSERIALIZE_DESTROY(var_hash); +@@ -888,7 +888,7 @@ UT_SYMBOL void ut_file_get_contents(char *path, zval *ret TSRMLS_DC) + + if (len < 0) EXCEPTION_ABORT_1("%s : Cannot read file",path); + +- ut_ezval_dtor(ret); ++ ut_ezval_dtor(ret TSRMLS_CC); + ZVAL_STRINGL(ret,contents,len,0); + } + +diff --git a/utils.h b/utils.h +index 9bc9655..e3e4cb1 100644 +--- a/utils.h ++++ b/utils.h +@@ -324,7 +324,7 @@ which is the case in this extension. */ + #else + #define RETVAL_BY_REF(zp) \ + { \ +- ut_ezval_ptr_dtor(return_value_ptr); \ ++ ut_ezval_ptr_dtor(return_value_ptr TSRMLS_CC); \ + Z_ADDREF_P(zp); \ + *return_value_ptr=(zp); \ + } +@@ -420,15 +420,15 @@ UT_SYMBOL inline void ut_dbg_print_time(); + + UT_SYMBOL inline int ut_is_web(void); + UT_SYMBOL void ut_decref(zval *zp); +-UT_SYMBOL void ut_pezval_dtor(zval *zp, int persistent); +-UT_SYMBOL void ut_ezval_dtor(zval *zp); +-UT_SYMBOL void ut_pzval_dtor(zval *zp); +-UT_SYMBOL void ut_pezval_ptr_dtor(zval ** zpp, int persistent); +-UT_SYMBOL void ut_ezval_ptr_dtor(zval **zpp); +-UT_SYMBOL void ut_pzval_ptr_dtor(zval **zpp); +-UT_SYMBOL void ut_persistent_array_init(zval * zp); +-UT_SYMBOL void ut_persistent_copy_ctor(zval ** ztpp); +-UT_SYMBOL zval *ut_persist_zval(zval * zsp); ++UT_SYMBOL void ut_pezval_dtor(zval *zp, int persistent TSRMLS_DC); ++UT_SYMBOL void ut_ezval_dtor(zval *zp TSRMLS_DC); ++UT_SYMBOL void ut_pzval_dtor(zval *zp TSRMLS_DC); ++UT_SYMBOL void ut_pezval_ptr_dtor(zval ** zpp, int persistent TSRMLS_DC); ++UT_SYMBOL void ut_ezval_ptr_dtor(zval **zpp TSRMLS_DC); ++UT_SYMBOL void ut_pzval_ptr_dtor(zval **zpp TSRMLS_DC); ++UT_SYMBOL void ut_persistent_array_init(zval * zp TSRMLS_DC); ++UT_SYMBOL void ut_persistent_copy_ctor(zval ** ztpp TSRMLS_DC); ++UT_SYMBOL zval *ut_persist_zval(zval * zsp TSRMLS_DC); + UT_SYMBOL zval *ut_new_instance(char *class_name, int class_name_len, + int construct, int nb_args, zval ** args TSRMLS_DC); + UT_SYMBOL inline void ut_call_user_function_void(zval *obj_zp, char *func, diff --git a/phk-pr3.patch b/phk-pr3.patch new file mode 100644 index 0000000..088d6eb --- /dev/null +++ b/phk-pr3.patch @@ -0,0 +1,27 @@ +From 7d4794ab5b5097ea3b92bd432d64663488c2e66e Mon Sep 17 00:00:00 2001 +From: Remi Collet <fedora@famillecollet.com> +Date: Thu, 28 May 2015 19:07:10 +0200 +Subject: [PATCH] fix zend_parse_parameters call + +--- + PHK_Cache.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/PHK_Cache.c b/PHK_Cache.c +index 69354d3..c975e76 100644 +--- a/PHK_Cache.c ++++ b/PHK_Cache.c +@@ -141,9 +141,12 @@ static PHP_METHOD(PHK_Cache, cacheID) + + static PHP_METHOD(PHK_Cache, setCacheMaxSize) + { +- if (zend_parse_parameters(ZEND_NUM_ARGS()TSRMLS_CC, "l", &cache_maxsize) ++ long tmp; ++ ++ if (zend_parse_parameters(ZEND_NUM_ARGS()TSRMLS_CC, "l", &tmp) + == FAILURE) + EXCEPTION_ABORT("Cannot parse parameters"); ++ cache_maxsize = (int)tmp; + } + + /* }}} */ diff --git a/php-pecl-phk.spec b/php-pecl-phk.spec new file mode 100644 index 0000000..6cb07d9 --- /dev/null +++ b/php-pecl-phk.spec @@ -0,0 +1,250 @@ +# remirepo spec file for php-pecl-phk +# +# Copyright (c) 2015 Remi Collet +# License: CC-BY-SA +# http://creativecommons.org/licenses/by-sa/4.0/ +# +# Please, preserve the changelog entries +# +%{?scl: %scl_package php-pecl-phk} +%{!?php_inidir: %global php_inidir %{_sysconfdir}/php.d} +%{!?__pecl: %global __pecl %{_bindir}/pecl} +%{!?__php: %global __php %{_bindir}/php} + +%global with_zts 0%{?__ztsphp:1} +%global pecl_name phk +%global with_tests %{?_without_tests:0}%{!?_without_tests:1} +%if "%{php_version}" < "5.6" +%global ini_name %{pecl_name}.ini +%else +%global ini_name 40-%{pecl_name}.ini +%endif + +Summary: Accelerator for Automap and PHK +Name: %{?scl_prefix}php-pecl-%{pecl_name} +Version: 3.0.0 +Release: 0%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')} +License: MIT +Group: Development/Languages +URL: http://pecl.php.net/package/%{pecl_name} +Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz + +# https://github.com/flaupretre/pecl-phk/pull/1 +Patch0: %{pecl_name}-pr1.patch +# https://github.com/flaupretre/pecl-phk/pull/2 +Patch1: %{pecl_name}-pr2.patch +# https://github.com/flaupretre/pecl-phk/pull/3 +Patch2: %{pecl_name}-pr3.patch + + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: %{?scl_prefix}php-devel > 5.3 +BuildRequires: %{?scl_prefix}php-pear +BuildRequires: gdb + +Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api} +Requires: %{?scl_prefix}php(api) = %{php_core_api} +%{?_sclreq:Requires: %{?scl_prefix}runtime%{?_sclreq}%{?_isa}} + +Provides: %{?scl_prefix}php-%{pecl_name} = %{version} +Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version} +Provides: %{?scl_prefix}php-pecl(%{pecl_name}) = %{version} +Provides: %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version} + +%if "%{?vendor}" == "Remi Collet" && 0%{!?scl:1} +# Other third party repo stuff +Obsoletes: php53-pecl-%{pecl_name} <= %{version} +Obsoletes: php53u-pecl-%{pecl_name} <= %{version} +Obsoletes: php54-pecl-%{pecl_name} <= %{version} +Obsoletes: php54w-pecl-%{pecl_name} <= %{version} +%if "%{php_version}" > "5.5" +Obsoletes: php55u-pecl-%{pecl_name} <= %{version} +Obsoletes: php55w-pecl-%{pecl_name} <= %{version} +%endif +%if "%{php_version}" > "5.6" +Obsoletes: php56u-pecl-%{pecl_name} <= %{version} +Obsoletes: php56w-pecl-%{pecl_name} <= %{version} +%endif +%if "%{php_version}" > "7.0" +Obsoletes: php70u-pecl-%{pecl_name} <= %{version} +Obsoletes: php70w-pecl-%{pecl_name} <= %{version} +%endif +%endif + +%if 0%{?fedora} < 20 && 0%{?rhel} < 7 +# Filter shared private +%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$} +%{?filter_setup} +%endif + + +%description +An optional accelerator for Automap and PHK. + +Automap (http://automap.tekwire.net) is a fast map-based autoloader. + +PHK (http://phk.tekwire.net) is a PHP-oriented package/archive system. + +This extension does not provide any new feature, it just provides a dramatic +increase in performance when using Automap and/or PHK. + +Note that there is no 'Automap' PECL extension anymore. The PHK extension now +includes it. So, this is the one you need, even if using Automap out of PHK +packages. + +Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')%{?scl: as Software Collection}. + + +%prep +%setup -q -c +mv %{pecl_name}-%{version} NTS + +# Don't install tests +sed -e 's/role="test"/role="src"/' \ + -i package.xml + +cd NTS +%patch0 -p1 -b .php55 +%patch1 -p1 -b .phpzts +%patch2 -p1 -b .zpp + +# Sanity check, really often broken +extver=$(sed -n '/#define PHP_PHK_VERSION/{s/.* "//;s/".*$//;p}' php_phk.h) +if test "x${extver}" != "x%{version}"; then + : Error: Upstream extension version is ${extver}, expecting %{version}. + exit 1 +fi +cd .. + +%if %{with_zts} +# Duplicate source tree for NTS / ZTS build +cp -pr NTS ZTS +%endif + +# Create configuration file +cat << 'EOF' | tee %{ini_name} +; Enable '%{summary}' extension module +extension=%{pecl_name}.so +EOF + + +%build +peclbuild() { + %{_bindir}/${1}ize + %configure \ + --with-php-config=%{_bindir}/${1}-config \ + --with-libdir=%{_lib} \ + --enable-phk + + make %{?_smp_mflags} +} + +cd NTS +peclbuild php + +%if %{with_zts} +cd ../ZTS +peclbuild zts-php +%endif + + +%install +rm -rf %{buildroot} + +make -C NTS install INSTALL_ROOT=%{buildroot} + +# install config file +install -D -m 644 %{ini_name} %{buildroot}%{php_inidir}/%{ini_name} + +# Install XML package description +install -D -m 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml + +%if %{with_zts} +make -C ZTS install INSTALL_ROOT=%{buildroot} + +install -D -m 644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name} +%endif + +# Documentation +for i in $(grep 'role="doc"' package.xml | sed -e 's/^.*name="//;s/".*$//') +do install -Dpm 644 NTS/$i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i +done + + +# when pear installed alone, after us +%triggerin -- %{?scl_prefix}php-pear +if [ -x %{__pecl} ] ; then + %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : +fi + +# posttrans as pear can be installed after us +%posttrans +if [ -x %{__pecl} ] ; then + %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : +fi + +%postun +if [ $1 -eq 0 -a -x %{__pecl} ] ; then + %{pecl_uninstall} %{pecl_name} >/dev/null || : +fi + + +%check +cd NTS +: Minimal load test for NTS extension +%{__php} --no-php-ini \ + --define extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \ + --modules | grep %{pecl_name} + +%if %{with_tests} +: Upstream test suite for NTS extension +TEST_PHP_EXECUTABLE=%{__php} \ +TEST_PHP_ARGS="-n -d extension=$PWD/modules/%{pecl_name}.so" \ +NO_INTERACTION=1 \ +REPORT_EXIT_STATUS=1 \ +%{__php} -n run-tests.php --show-diff +%endif + +%if %{with_zts} +cd ../ZTS +: Minimal load test for ZTS extension +%{__ztsphp} --no-php-ini \ + --define extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so \ + --modules | grep %{pecl_name} + +%if %{with_tests} +: Upstream test suite for ZTS extension +TEST_PHP_EXECUTABLE=%{_bindir}/zts-php \ +TEST_PHP_ARGS="-n -d extension=$PWD/modules/%{pecl_name}.so" \ +NO_INTERACTION=1 \ +REPORT_EXIT_STATUS=1 \ +%{_bindir}/zts-php -n run-tests.php --show-diff +%endif +%endif + + +%clean +rm -rf %{buildroot} + + +%files +%defattr(-,root,root,-) +%{?_licensedir:%license NTS/LICENSE} +%doc %{pecl_docdir}/%{pecl_name} +%{pecl_xmldir}/%{name}.xml + +%config(noreplace) %{php_inidir}/%{ini_name} +%{php_extdir}/%{pecl_name}.so + +%if %{with_zts} +%config(noreplace) %{php_ztsinidir}/%{ini_name} +%{php_ztsextdir}/%{pecl_name}.so +%endif + + +%changelog +* Thu May 28 2015 Remi Collet <remi@fedoraproject.org> - 3.0.0-0 +- initial package for upcoming version 3.0.0 +- open # https://github.com/flaupretre/pecl-phk/pull/1 PHP 5.5 +- open # https://github.com/flaupretre/pecl-phk/pull/2 ZTS +- open # https://github.com/flaupretre/pecl-phk/pull/3 zpp
\ No newline at end of file |