Attempt at fixing bug 26370, which seems to be an infinite loop caused by ob_get_leve...
authorRoan Kattouw <catrope@users.mediawiki.org>
Sat, 8 Jan 2011 15:41:55 +0000 (15:41 +0000)
committerRoan Kattouw <catrope@users.mediawiki.org>
Sat, 8 Jan 2011 15:41:55 +0000 (15:41 +0000)
includes/resourceloader/ResourceLoader.php

index 2ee7a6e..4db401b 100644 (file)
@@ -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();
                                }