From 4ba57f2b039173b238f115bbd912cf091fc45b50 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 16 Apr 2023 00:40:43 +0100 Subject: [PATCH] RegisteredListener: use try...finally to stop timings While event handlers should not throw exceptions, we need to make sure the timings get stopped in the correct order, because the parent Event timer will be stopped due to using a finally block. If this happens while the handler timing is still running, a second exception will occur, obscuring the real error. --- src/event/RegisteredListener.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/event/RegisteredListener.php b/src/event/RegisteredListener.php index d227fc2cb..6b29dfec3 100644 --- a/src/event/RegisteredListener.php +++ b/src/event/RegisteredListener.php @@ -57,8 +57,11 @@ class RegisteredListener{ return; } $this->timings->startTiming(); - ($this->handler)($event); - $this->timings->stopTiming(); + try{ + ($this->handler)($event); + }finally{ + $this->timings->stopTiming(); + } } public function isHandlingCancelled() : bool{