diff --git a/inc/events.php b/inc/events.php
index 09f3f3c0c7a6c5a6dcca1f2a3f5215785cef64c3..4e81f85c8a0783b87bb7a51d9f86380c86ad06f1 100644
--- a/inc/events.php
+++ b/inc/events.php
@@ -158,8 +158,7 @@ class Doku_Event_Handler {
         $evt_name = $event->name . ($advise ? '_'.$advise : '_BEFORE');
 
         if (!empty($this->_hooks[$evt_name])) {
-            $hook = reset($this->_hooks[$evt_name]);
-            do {
+            foreach ($this->_hooks[$evt_name] as $hook) {
                 //        list($obj, $method, $param) = $hook;
                 $obj =& $hook[0];
                 $method = $hook[1];
@@ -171,7 +170,8 @@ class Doku_Event_Handler {
                     $obj->$method($event, $param);
                 }
 
-            } while ($event->_continue && $hook = next($this->_hooks[$evt_name]));
+                if (!$event->_continue) break;
+            }
         }
     }
 }