PrefixSearch: avoid looking for titles that don't exist
authorChad Horohoe <chadh@wikimedia.org>
Mon, 26 Oct 2015 18:50:23 +0000 (11:50 -0700)
committerChad Horohoe <chadh@wikimedia.org>
Mon, 26 Oct 2015 18:50:23 +0000 (11:50 -0700)
WikiPage::getRedirectTarget() can very easily return null. Don't
blow up when that happens.

Properly document PrefixSearch::getRedirectTarget() while we're
here.

Bug: T116029
Change-Id: Ib509e8e3e6ec04a787de3857a4b5ee9b01560559

includes/PrefixSearch.php

index 430b4b8..f36635b 100644 (file)
@@ -258,12 +258,18 @@ abstract class PrefixSearch {
                return $array;
        }
 
+       /**
+        * Get a redirect's destination from a title
+        * @param Title $title A title to redirect. It may not redirect or even exist
+        * @return null|string If title exists and redirects, get the destination's prefixed name
+        */
        private function getRedirectTarget( $title ) {
                $page = WikiPage::factory( $title );
                if ( !$page->exists() ) {
                        return null;
                }
-               return $page->getRedirectTarget()->getPrefixedText();
+               $redir = $page->getRedirectTarget();
+               return $redir ? $redir->getPrefixedText() : null;
        }
 
        /**