diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 45c9490713bb313fcea0639eb5f66643a5f49cfb..ebcd2176a730828402d87f1c95c69e74749907f4 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -1033,8 +1033,12 @@ function _drupal_shutdown_function() { chdir(DRUPAL_ROOT); try { - foreach ($callbacks as &$callback) { + reset($callbacks); + // Do not use foreach() here because it is possible that the callback will + // add to the $callbacks array via drupal_register_shutdown_function(). + while ($callback = current($callbacks)) { call_user_func_array($callback['callback'], $callback['arguments']); + next($callbacks); } } // PHP 7 introduces Throwable, which covers both Error and