From 20740a9650b24711b22d2597c1cff4d69d574b84 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Wed, 4 Feb 2015 10:21:00 +0100 Subject: Fix error in exec_hook() in case some hook handler was unregistered before --- program/lib/Roundcube/rcube_plugin_api.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'program/lib/Roundcube') diff --git a/program/lib/Roundcube/rcube_plugin_api.php b/program/lib/Roundcube/rcube_plugin_api.php index b3a32985c..23732efa3 100644 --- a/program/lib/Roundcube/rcube_plugin_api.php +++ b/program/lib/Roundcube/rcube_plugin_api.php @@ -374,9 +374,11 @@ class rcube_plugin_api */ public function unregister_hook($hook, $callback) { - $callback_id = array_search($callback, $this->handlers[$hook]); + $callback_id = array_search($callback, (array) $this->handlers[$hook]); if ($callback_id !== false) { - unset($this->handlers[$hook][$callback_id]); + // array_splice() removes the element and re-indexes keys + // that is required by the 'for' loop in exec_hook() below + array_splice($this->handlers[$hook], $callback_id, 1); } } -- cgit v1.2.3