From abb86661c3d6b19af36cd2446a48b5b1b5769ac8 Mon Sep 17 00:00:00 2001 From: daniel Date: Thu, 4 Jun 2015 17:02:19 +0200 Subject: [PATCH] Avoid data loss if compression fails Change-Id: I0b6de030b101fdc3b2ea2cd0c15913e33e9da98d --- includes/Revision.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/includes/Revision.php b/includes/Revision.php index 3ba6157c79..9bb4d16a91 100644 --- a/includes/Revision.php +++ b/includes/Revision.php @@ -1284,8 +1284,14 @@ class Revision implements IDBAccessObject { if ( $wgCompressRevisions ) { if ( function_exists( 'gzdeflate' ) ) { - $text = gzdeflate( $text ); - $flags[] = 'gzip'; + $deflated = gzdeflate( $text ); + + if ( $deflated === false ) { + wfLogWarning( __METHOD__ . ': gzdeflate() failed' ); + } else { + $text = $deflated; + $flags[] = 'gzip'; + } } else { wfDebug( __METHOD__ . " -- no zlib support, not compressing\n" ); } @@ -1306,6 +1312,11 @@ class Revision implements IDBAccessObject { # This can be done periodically via maintenance/compressOld.php, and # as pages are saved if $wgCompressRevisions is set. $text = gzinflate( $text ); + + if ( $text === false ) { + wfLogWarning( __METHOD__ . ': gzinflate() failed' ); + return false; + } } if ( in_array( 'object', $flags ) ) { -- 2.20.1