From 79478bb117dbb7471ef3a537cdbc2d0519598434 Mon Sep 17 00:00:00 2001 From: Tim Starling Date: Sat, 1 Nov 2008 21:38:46 +0000 Subject: [PATCH] Convert from old DiffHistoryBlob format. Untested, committing for test by Jelte. --- includes/HistoryBlob.php | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/includes/HistoryBlob.php b/includes/HistoryBlob.php index 323d10745b..dda5078107 100644 --- a/includes/HistoryBlob.php +++ b/includes/HistoryBlob.php @@ -456,7 +456,7 @@ class DiffHistoryBlob implements HistoryBlob { } } if ( $header['csize'] != strlen( $base ) ) { - wfDebug( __METHOD__. ": incorrect base length {$header['csize']} -> {strlen($base)}\n" ); + wfDebug( __METHOD__. ": incorrect base length\n" ); return false; } @@ -547,14 +547,23 @@ class DiffHistoryBlob implements HistoryBlob { if ( isset( $info['default'] ) ) { $this->mDefaultKey = $info['default']; } - $map = explode( ',', $info['map'] ); - $cur = 0; - $this->mDiffMap = array(); - foreach ( $map as $i ) { - $cur += $i; - $this->mDiffMap[] = $cur; - } $this->mDiffs = $info['diffs']; + if ( isset( $info['base'] ) ) { + // Old format + $this->mDiffMap = range( 0, count( $this->mDiffs ) - 1 ); + array_unshift( $this->mDiffs, + pack( 'VVCV', 0, 0, self::XDL_BDOP_INSB, strlen( $info['base'] ) ) . + $info['base'] ); + } else { + // New format + $map = explode( ',', $info['map'] ); + $cur = 0; + $this->mDiffMap = array(); + foreach ( $map as $i ) { + $cur += $i; + $this->mDiffMap[] = $cur; + } + } $this->uncompress(); } -- 2.20.1