From e37e7f1329af4c205439d49dc1297c46f6648ccb Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Fri, 13 Apr 2018 10:43:39 +0200 Subject: [PATCH] Fix handling of non-callable event listeners, fixes #7229 --- src/Composer/EventDispatcher/EventDispatcher.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Composer/EventDispatcher/EventDispatcher.php b/src/Composer/EventDispatcher/EventDispatcher.php index 2a180614c..7f7a2cd86 100644 --- a/src/Composer/EventDispatcher/EventDispatcher.php +++ b/src/Composer/EventDispatcher/EventDispatcher.php @@ -166,7 +166,12 @@ class EventDispatcher $return = 0; foreach ($listeners as $callable) { - if (!is_string($callable) && is_callable($callable)) { + if (!is_string($callable)) { + if (!is_callable($callable)) { + $className = is_object($callable[0]) ? get_class($callable[0]) : $callable[0]; + + throw new \RuntimeException('Subscriber '.$className.'::'.$callable[1].' for event '.$event->getName().' is not callable, make sure the function is defined and public'); + } $event = $this->checkListenerExpectedEvent($callable, $event); $return = false === call_user_func($callable, $event) ? 1 : 0; } elseif ($this->isComposerScript($callable)) {