diff --git a/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php b/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php
index bfe3d9bf184fa6e369d817d3e08c63e94fe85c4a..d1cdcbb7b79aa4c534397b0017b3e68d241a5008 100644
--- a/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php
+++ b/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php
@@ -90,7 +90,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;
         }
     }