From 44ed77c07ece4cd8ae34809850b1e74baee90b61 Mon Sep 17 00:00:00 2001 From: Max Semenik Date: Fri, 4 Mar 2016 11:21:53 -0800 Subject: [PATCH] Don't treat configured but absent engine as executable E.g. if you have $wgExternalDiffEngine = 'wikidiff2' but after a PHP update you no longer have the module you still shouldn't attempt to shell out to some nonexistent wikidiff2. Bug: T74030 Change-Id: I745cd1cb2e152f4fbb95c8f782d70117f8c844f1 --- includes/diff/DifferenceEngine.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index 622137a73a..1fa19704db 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -852,15 +852,16 @@ class DifferenceEngine extends ContextSource { $wgExternalDiffEngine = false; } - if ( $wgExternalDiffEngine == 'wikidiff2' && function_exists( 'wikidiff2_do_diff' ) ) { - # Better external diff engine, the 2 may some day be dropped - # This one does the escaping and segmenting itself - $text = wikidiff2_do_diff( $otext, $ntext, 2 ); - $text .= $this->debug( 'wikidiff2' ); - - return $text; - } - if ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) { + if ( $wgExternalDiffEngine == 'wikidiff2' ) { + if ( function_exists( 'wikidiff2_do_diff' ) ) { + # Better external diff engine, the 2 may some day be dropped + # This one does the escaping and segmenting itself + $text = wikidiff2_do_diff( $otext, $ntext, 2 ); + $text .= $this->debug( 'wikidiff2' ); + + return $text; + } + } elseif ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) { # Diff via the shell $tmpDir = wfTempDir(); $tempName1 = tempnam( $tmpDir, 'diff_' ); -- 2.20.1