summaryrefslogtreecommitdiffstats
path: root/php-wip2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'php-wip2.patch')
-rw-r--r--php-wip2.patch222
1 files changed, 0 insertions, 222 deletions
diff --git a/php-wip2.patch b/php-wip2.patch
deleted file mode 100644
index 7618661..0000000
--- a/php-wip2.patch
+++ /dev/null
@@ -1,222 +0,0 @@
-diff -up php-5.5.7RC1/ext/reflection/php_reflection.c.prev php-5.5.7RC1/ext/reflection/php_reflection.c
---- php-5.5.7RC1/ext/reflection/php_reflection.c.prev 2013-12-02 14:32:21.349858888 +0100
-+++ php-5.5.7RC1/ext/reflection/php_reflection.c 2013-12-02 15:11:13.073610775 +0100
-@@ -1105,29 +1105,26 @@ static void _extension_string(string *st
- string_free(&str_constants);
- }
-
-- if (module->functions && module->functions->fname) {
-+ {
-+ HashPosition iterator;
- zend_function *fptr;
-- const zend_function_entry *func = module->functions;
--
-- string_printf(str, "\n - Functions {\n");
-+ int first = 1;
-
-- /* Is there a better way of doing this? */
-- while (func->fname) {
-- int fname_len = strlen(func->fname);
-- char *lc_name = zend_str_tolower_dup(func->fname, fname_len);
--
-- if (zend_hash_find(EG(function_table), lc_name, fname_len + 1, (void**) &fptr) == FAILURE) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal error: Cannot find extension function %s in global function table", func->fname);
-- func++;
-- efree(lc_name);
-- continue;
-+ zend_hash_internal_pointer_reset_ex(CG(function_table), &iterator);
-+ while (zend_hash_get_current_data_ex(CG(function_table), (void **) &fptr, &iterator) == SUCCESS) {
-+ if (fptr->common.type==ZEND_INTERNAL_FUNCTION
-+ && fptr->internal_function.module == module) {
-+ if (first) {
-+ string_printf(str, "\n - Functions {\n");
-+ first = 0;
-+ }
-+ _function_string(str, fptr, NULL, " " TSRMLS_CC);
- }
--
-- _function_string(str, fptr, NULL, " " TSRMLS_CC);
-- efree(lc_name);
-- func++;
-+ zend_hash_move_forward_ex(CG(function_table), &iterator);
-+ }
-+ if (!first) {
-+ string_printf(str, "%s }\n", indent);
- }
-- string_printf(str, "%s }\n", indent);
- }
-
- {
-@@ -5264,6 +5261,9 @@ ZEND_METHOD(reflection_extension, getFun
- {
- reflection_object *intern;
- zend_module_entry *module;
-+ HashPosition iterator;
-+ zval *function;
-+ zend_function *fptr;
-
- if (zend_parse_parameters_none() == FAILURE) {
- return;
-@@ -5271,29 +5271,15 @@ ZEND_METHOD(reflection_extension, getFun
- GET_REFLECTION_OBJECT_PTR(module);
-
- array_init(return_value);
-- if (module->functions) {
-- zval *function;
-- zend_function *fptr;
-- const zend_function_entry *func = module->functions;
--
-- /* Is there a better way of doing this? */
-- while (func->fname) {
-- int fname_len = strlen(func->fname);
-- char *lc_name = zend_str_tolower_dup(func->fname, fname_len);
--
-- if (zend_hash_find(EG(function_table), lc_name, fname_len + 1, (void**) &fptr) == FAILURE) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal error: Cannot find extension function %s in global function table", func->fname);
-- func++;
-- efree(lc_name);
-- continue;
-- }
--
-+ zend_hash_internal_pointer_reset_ex(CG(function_table), &iterator);
-+ while (zend_hash_get_current_data_ex(CG(function_table), (void **) &fptr, &iterator) == SUCCESS) {
-+ if (fptr->common.type==ZEND_INTERNAL_FUNCTION
-+ && fptr->internal_function.module == module) {
- ALLOC_ZVAL(function);
- reflection_function_factory(fptr, NULL, function TSRMLS_CC);
-- add_assoc_zval_ex(return_value, func->fname, fname_len+1, function);
-- func++;
-- efree(lc_name);
-+ add_assoc_zval(return_value, fptr->common.function_name, function);
- }
-+ zend_hash_move_forward_ex(CG(function_table), &iterator);
- }
- }
- /* }}} */
-diff -up php-5.5.7RC1/ext/reflection/tests/ReflectionExtension_bug66218.phpt.prev php-5.5.7RC1/ext/reflection/tests/ReflectionExtension_bug66218.phpt
---- php-5.5.7RC1/ext/reflection/tests/ReflectionExtension_bug66218.phpt.prev 2013-12-02 16:31:00.840348312 +0100
-+++ php-5.5.7RC1/ext/reflection/tests/ReflectionExtension_bug66218.phpt 2013-12-02 15:42:47.726878417 +0100
-@@ -0,0 +1,25 @@
-+--TEST--
-+ReflectionExtension::getFunctions() ##6218 zend_register_functions breaks reflection
-+--SKIPIF--
-+<?php
-+if (!extension_loaded('reflection')) print 'skip: missing reflection extension';
-+if (PHP_SAPI != "cli") die("Skip: CLI only test");
-+?>
-+--FILE--
-+<?php
-+$r = new ReflectionExtension('standard');
-+$t = $r->getFunctions();
-+var_dump($t['cli_set_process_title']);
-+var_dump($t['cli_get_process_title']);
-+?>
-+Done
-+--EXPECTF--
-+object(ReflectionFunction)#%d (1) {
-+ ["name"]=>
-+ string(21) "cli_set_process_title"
-+}
-+object(ReflectionFunction)#%d (1) {
-+ ["name"]=>
-+ string(21) "cli_get_process_title"
-+}
-+Done
-diff -up php-5.5.7RC1/Zend/tests/bug66218.phpt.prev php-5.5.7RC1/Zend/tests/bug66218.phpt
---- php-5.5.7RC1/Zend/tests/bug66218.phpt.prev 2013-12-02 16:31:15.704395109 +0100
-+++ php-5.5.7RC1/Zend/tests/bug66218.phpt 2013-12-02 14:41:49.085440975 +0100
-@@ -0,0 +1,22 @@
-+--TEST--
-+Bug #66218 zend_register_functions breaks reflection
-+--SKIPIF--
-+<?php
-+if (PHP_SAPI != "cli") die("Skip: CLI only test");
-+?>
-+--FILE--
-+<?php
-+$tab = get_extension_funcs("standard");
-+$fcts = array("dl", "cli_set_process_title", "cli_get_process_title");
-+foreach ($fcts as $fct) {
-+ if (in_array($fct, $tab)) {
-+ echo "$fct Ok\n";
-+ }
-+}
-+?>
-+Done
-+--EXPECTF--
-+dl Ok
-+cli_set_process_title Ok
-+cli_get_process_title Ok
-+Done
-diff -up php-5.5.7RC1/Zend/zend_builtin_functions.c.prev php-5.5.7RC1/Zend/zend_builtin_functions.c
---- php-5.5.7RC1/Zend/zend_builtin_functions.c.prev 2013-12-02 11:29:44.399427824 +0100
-+++ php-5.5.7RC1/Zend/zend_builtin_functions.c 2013-12-02 15:08:21.889226383 +0100
-@@ -2442,36 +2442,49 @@ ZEND_FUNCTION(extension_loaded)
- Returns an array with the names of functions belonging to the named extension */
- ZEND_FUNCTION(get_extension_funcs)
- {
-- char *extension_name;
-- int extension_name_len;
-+ char *extension_name, *lcname;
-+ int extension_name_len, array;
- zend_module_entry *module;
-- const zend_function_entry *func;
--
-+ HashPosition iterator;
-+ zend_function *zif;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &extension_name, &extension_name_len) == FAILURE) {
- return;
- }
--
- if (strncasecmp(extension_name, "zend", sizeof("zend"))) {
-- char *lcname = zend_str_tolower_dup(extension_name, extension_name_len);
-- if (zend_hash_find(&module_registry, lcname,
-- extension_name_len+1, (void**)&module) == FAILURE) {
-- efree(lcname);
-- RETURN_FALSE;
-- }
-+ lcname = zend_str_tolower_dup(extension_name, extension_name_len);
-+ } else {
-+ lcname = estrdup("core");
-+ }
-+ if (zend_hash_find(&module_registry, lcname,
-+ extension_name_len+1, (void**)&module) == FAILURE) {
- efree(lcname);
-+ RETURN_FALSE;
-+ }
-
-- if (!(func = module->functions)) {
-- RETURN_FALSE;
-- }
-+ zend_hash_internal_pointer_reset_ex(CG(function_table), &iterator);
-+ if (module->functions) {
-+ /* avoid BC break, if functions list is empty, will return an empty array */
-+ array_init(return_value);
-+ array = 1;
- } else {
-- func = builtin_functions;
-+ array = 0;
-+ }
-+ while (zend_hash_get_current_data_ex(CG(function_table), (void **) &zif, &iterator) == SUCCESS) {
-+ if (zif->common.type==ZEND_INTERNAL_FUNCTION
-+ && zif->internal_function.module == module) {
-+ if (!array) {
-+ array_init(return_value);
-+ array = 1;
-+ }
-+ add_next_index_string(return_value, zif->common.function_name, 1);
-+ }
-+ zend_hash_move_forward_ex(CG(function_table), &iterator);
- }
-
-- array_init(return_value);
-+ efree(lcname);
-
-- while (func->fname) {
-- add_next_index_string(return_value, func->fname, 1);
-- func++;
-+ if (!array) {
-+ RETURN_FALSE;
- }
- }
- /* }}} */