- Patch #667098 by catch: drupal_get_bootstrap_phase() was broken.

merge-requests/26/head
Dries Buytaert 2010-01-14 21:17:56 +00:00
parent fed2d40473
commit 239cec289d
1 changed files with 10 additions and 8 deletions

View File

@ -1498,7 +1498,7 @@ function drupal_bootstrap($phase = NULL, $new_phase = TRUE) {
static $final_phase; static $final_phase;
// Not drupal_static(), because it's impossible to roll back to an earlier // Not drupal_static(), because it's impossible to roll back to an earlier
// bootstrap state. // bootstrap state.
static $completed_phase = -1; static $stored_phase = -1;
// When not recursing, store the phase name so it's not forgotten while // When not recursing, store the phase name so it's not forgotten while
// recursing. // recursing.
@ -1508,8 +1508,15 @@ function drupal_bootstrap($phase = NULL, $new_phase = TRUE) {
if (isset($phase)) { if (isset($phase)) {
// Call a phase if it has not been called before and is below the requested // Call a phase if it has not been called before and is below the requested
// phase. // phase.
while ($phases && $phase > $completed_phase && $final_phase > $completed_phase) { while ($phases && $phase > $stored_phase && $final_phase > $stored_phase) {
$current_phase = array_shift($phases); $current_phase = array_shift($phases);
// This function is re-entrant. Only update the completed phase when the
// current call actually resulted in a progress in the bootstrap process.
if ($current_phase > $stored_phase) {
$stored_phase = $current_phase;
}
switch ($current_phase) { switch ($current_phase) {
case DRUPAL_BOOTSTRAP_CONFIGURATION: case DRUPAL_BOOTSTRAP_CONFIGURATION:
_drupal_bootstrap_configuration(); _drupal_bootstrap_configuration();
@ -1545,14 +1552,9 @@ function drupal_bootstrap($phase = NULL, $new_phase = TRUE) {
_drupal_bootstrap_full(); _drupal_bootstrap_full();
break; break;
} }
// This function is reentrant. Only update the completed phase when the
// current call actually resulted in a progress in the bootstrap process.
if ($current_phase > $completed_phase) {
$completed_phase = $current_phase;
}
} }
} }
return $completed_phase; return $stored_phase;
} }
/** /**