From 8edf949acd15eec58cf442e09b64f52aca0646f2 Mon Sep 17 00:00:00 2001 From: Roan Kattouw Date: Sat, 8 Jan 2011 15:41:55 +0000 Subject: [PATCH] Attempt at fixing bug 26370, which seems to be an infinite loop caused by ob_get_level() never going all the way down to 0 no matter how many output buffers we destroy. Use a for loop instead --- includes/resourceloader/ResourceLoader.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index 2ee7a6e0de..4db401b10f 100644 --- a/includes/resourceloader/ResourceLoader.php +++ b/includes/resourceloader/ResourceLoader.php @@ -377,7 +377,11 @@ class ResourceLoader { // See also http://bugs.php.net/bug.php?id=51579 // To work around this, we tear down all output buffering before // sending the 304. - while ( ob_get_level() > 0 ) { + // On some setups, ob_get_level() doesn't seem to go down to zero + // no matter how often we call ob_get_clean(), so instead of doing + // the more intuitive while ( ob_get_level() > 0 ) ob_get_clean(); + // we have to be safe here and avoid an infinite loop. + for ( $i = 0; $i < ob_get_level(); $i++ ) { ob_end_clean(); } -- 2.20.1