diff --git a/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php b/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php index 5974bf773483826b252546da3b82d49db7b8e9fa..2bb14544fa7fab09aa262c226c06ec54d0c6015f 100644 --- a/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php +++ b/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php @@ -93,7 +93,9 @@ class Dispatcher implements \TYPO3\CMS\Core\SingletonInterface 'object' => $object, 'passSignalInformation' => $passSignalInformation === true ]; - if (!is_array($this->slots[$signalClassName][$signalName]) || !in_array($slot, $this->slots[$signalClassName][$signalName])) { + // The in_array() comparision needs to be strict to avoid potential issues + // with complex objects being registered as slot. + if (!is_array($this->slots[$signalClassName][$signalName]) || !in_array($slot, $this->slots[$signalClassName][$signalName], true)) { $this->slots[$signalClassName][$signalName][] = $slot; } }