Don't throw exceptions in ContentHandler::getUndoContent()
authorKunal Mehta <legoktm@member.fsf.org>
Thu, 8 Sep 2016 03:52:19 +0000 (20:52 -0700)
committerKunal Mehta <legoktm@member.fsf.org>
Thu, 8 Sep 2016 03:52:19 +0000 (20:52 -0700)
The method is not documented to throw any exceptions, and already
returns false on failure, and it can be seen as a failure case when the
content models are not the same.

Bug: T145044
Change-Id: I0394d19cd65f9dd3ee350d2cde95afb11ab9e7f4

includes/content/ContentHandler.php

index 22db08a..9ea4f40 100644 (file)
@@ -1018,9 +1018,15 @@ abstract class ContentHandler {
                        return false; // no content to undo
                }
 
-               $this->checkModelID( $cur_content->getModel() );
-               $this->checkModelID( $undo_content->getModel() );
-               $this->checkModelID( $undoafter_content->getModel() );
+               try {
+                       $this->checkModelID( $cur_content->getModel() );
+                       $this->checkModelID( $undo_content->getModel() );
+                       $this->checkModelID( $undoafter_content->getModel() );
+               } catch ( MWException $e ) {
+                       // If the revisions have different content models
+                       // just return false
+                       return false;
+               }
 
                if ( $cur_content->equals( $undo_content ) ) {
                        // No use doing a merge if it's just a straight revert.