diff options
Diffstat (limited to 'php-5.4.16-gc.patch')
-rw-r--r-- | php-5.4.16-gc.patch | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/php-5.4.16-gc.patch b/php-5.4.16-gc.patch deleted file mode 100644 index a1f4323..0000000 --- a/php-5.4.16-gc.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 3c87945c95c9c31986e690bb046c70e58c8d8896 Mon Sep 17 00:00:00 2001 -From: Xinchen Hui <laruence@php.net> -Date: Wed, 5 Jun 2013 17:25:00 +0800 -Subject: [PATCH] Fixed bug #64960 (Segfault in gc_zval_possible_root) - ---- - NEWS | 2 ++ - Zend/tests/bug64960.phpt | 40 ++++++++++++++++++++++++++++++++++++++++ - Zend/zend_execute_API.c | 6 ++---- - 3 files changed, 44 insertions(+), 4 deletions(-) - create mode 100644 Zend/tests/bug64960.phpt - -diff --git a/Zend/tests/bug64960.phpt b/Zend/tests/bug64960.phpt -new file mode 100644 -index 0000000..b31cca3 ---- /dev/null -+++ b/Zend/tests/bug64960.phpt -@@ -0,0 +1,40 @@ -+--TEST-- -+Bug #64960 (Segfault in gc_zval_possible_root) -+--FILE-- -+<?php -+// this makes ob_end_clean raise an error -+ob_end_flush(); -+ -+class ExceptionHandler { -+ public function __invoke (Exception $e) -+ { -+ // this triggers the custom error handler -+ ob_end_clean(); -+ } -+} -+ -+// this must be a class, closure does not trigger segfault -+set_exception_handler(new ExceptionHandler()); -+ -+// exception must be throwed from error handler. -+set_error_handler(function() -+{ -+ $e = new Exception; -+ $e->_trace = debug_backtrace(); -+ -+ throw $e; -+}); -+ -+// trigger error handler -+$a['waa']; -+?> -+--EXPECTF-- -+Notice: ob_end_flush(): failed to delete and flush buffer. No buffer to delete or flush in %sbug64960.php on line 3 -+ -+Fatal error: Uncaught exception 'Exception' in %sbug64960.php:19 -+Stack trace: -+#0 [internal function]: {closure}(8, 'ob_end_clean():...', '%s', 9, Array) -+#1 %sbug64960.php(9): ob_end_clean() -+#2 [internal function]: ExceptionHandler->__invoke(Object(Exception)) -+#3 {main} -+ thrown in %sbug64960.php on line 19 -diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c -index 9781889..687520d 100644 ---- a/Zend/zend_execute_API.c -+++ b/Zend/zend_execute_API.c -@@ -263,15 +263,13 @@ void shutdown_executor(TSRMLS_D) /* {{{ */ - if (EG(user_error_handler)) { - zeh = EG(user_error_handler); - EG(user_error_handler) = NULL; -- zval_dtor(zeh); -- FREE_ZVAL(zeh); -+ zval_ptr_dtor(&zeh); - } - - if (EG(user_exception_handler)) { - zeh = EG(user_exception_handler); - EG(user_exception_handler) = NULL; -- zval_dtor(zeh); -- FREE_ZVAL(zeh); -+ zval_ptr_dtor(&zeh); - } - - zend_stack_destroy(&EG(user_error_handlers_error_reporting)); --- -1.7.11.5 - |