- Affected version
- 2.3.12
If
triggerRunOnce() throws a Error (aka a Throwable not an Exception) then XF::dispatchLoop will swallow it.
PHP:
public static function triggerRunOnce($rethrow = false)
{
...
try
{
$fn();
}
catch (\Exception $e)
{
self::logException($e, true);
// can't know if we have an open transaction from before so have to roll it back
if ($rethrow)
{
throw $e;
}
}
...
public function dispatchLoop(RouteMatch $match)
{
...
try
{
\XF::triggerRunOnce(true);
}
catch (\Throwable $e)
{
...
}