diff options
| author | Xinchen Hui <laruence@gmail.com> | 2015-11-11 12:06:38 +0800 |
|---|---|---|
| committer | Xinchen Hui <laruence@gmail.com> | 2015-11-11 12:06:38 +0800 |
| commit | c3260b66c9723d63c75f4f63aa2b9f52c6915d6f (patch) | |
| tree | 9600f0a6b8fcc187c6144e3e53cc4686bde550bf /ext | |
| parent | d6c527830e57c85356916e2efc2e6f120d493051 (diff) | |
| download | php-git-c3260b66c9723d63c75f4f63aa2b9f52c6915d6f.tar.gz | |
Revert "Fixed bug #70249 (Segmentation fault while running PHPUnit tests on phpBB 3.2-dev)"
This reverts commit d6c527830e57c85356916e2efc2e6f120d493051.
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/standard/basic_functions.c | 13 | ||||
| -rw-r--r-- | ext/standard/tests/general_functions/bug70249.phpt | 28 |
2 files changed, 3 insertions, 38 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 1c5f3fe988..8da45c4287 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -5002,16 +5002,9 @@ PHPAPI void php_call_shutdown_functions(void) /* {{{ */ { if (BG(user_shutdown_function_names)) { zend_try { - zval *entry; - for (zend_hash_internal_pointer_reset(BG(user_shutdown_function_names)); - zend_hash_has_more_elements(BG(user_shutdown_function_names)) == SUCCESS; - zend_hash_move_forward(BG(user_shutdown_function_names))) { - if ((entry = zend_hash_get_current_data(BG(user_shutdown_function_names))) == NULL) { - continue; - } - user_shutdown_function_call(entry); - } - } zend_end_try(); + zend_hash_apply(BG(user_shutdown_function_names), user_shutdown_function_call); + } + zend_end_try(); php_free_shutdown_functions(); } } diff --git a/ext/standard/tests/general_functions/bug70249.phpt b/ext/standard/tests/general_functions/bug70249.phpt deleted file mode 100644 index aed8dccee3..0000000000 --- a/ext/standard/tests/general_functions/bug70249.phpt +++ /dev/null @@ -1,28 +0,0 @@ ---TEST-- -Bug #70249 (Segmentation fault while running PHPUnit tests on phpBB 3.2-dev) ---FILE-- -<?php - -class Logger { - public function __construct() { - register_shutdown_function(function () { - // make regular flush before other shutdown functions, which allows session data collection and so on - $this->flush(); - // make sure log entries written by shutdown functions are also flushed - // ensure "flush()" is called last when there are multiple shutdown functions - register_shutdown_function([$this, 'flush'], true); - }); - } - - public function flush($final = false) { - return 1; - } -} - -for ($i = 0; $i < 200; $i++) { - $a = new Logger(); -} -?> -okey ---EXPECT-- -okey |
