Apparently for certain (API) requests $this->getTitle() doesn't return a valid Title.
authorJack Phoenix <jack@countervandalism.net>
Wed, 11 Jun 2014 20:00:24 +0000 (23:00 +0300)
committerJack Phoenix <jack@countervandalism.net>
Wed, 11 Jun 2014 20:00:24 +0000 (23:00 +0300)
Usually these are API siteinfo requests (api.php?action=query&meta=siteinfo). In that case, this code used to produce a fatal ("Call to a member function getPageLanguage() on a non-object").

Change-Id: Ifb6f99fe554890ff2719220f58d1b6c1a7a95ddc

includes/OutputPage.php

index 6075d8d..8fd7812 100644 (file)
@@ -1889,7 +1889,12 @@ class OutputPage extends ContextSource {
         *   /w/index.php?title=Main_page&variant=zh-cn should never be served.
         */
        function addAcceptLanguage() {
-               $lang = $this->getTitle()->getPageLanguage();
+               $title = $this->getTitle();
+               if ( !$title instanceof Title ) {
+                       return;
+               }
+
+               $lang = $title->getPageLanguage();
                if ( !$this->getRequest()->getCheck( 'variant' ) && $lang->hasVariants() ) {
                        $variants = $lang->getVariants();
                        $aloption = array();