Fix weird bug occurring in corrupted databases.

This commit is contained in:
Andrew Garrett 2009-03-16 08:21:24 +00:00
parent 26597d4257
commit 334582b645
2 changed files with 30 additions and 1 deletions

View file

@ -288,7 +288,7 @@ class AFPUserVisibleException extends AFPException {
}
class AbuseFilterParser {
var $mParams, $mVars, $mCode, $mTokens, $mPos, $mCur;
var $mParams, $mVars, $mCode, $mTokens, $mPos, $mCur, $mSubexpressions, $mDebug;
// length,lcase,ccnorm,rmdoubles,specialratio,rmspecials,norm,count
static $mFunctions = array(
@ -341,6 +341,8 @@ class AbuseFilterParser {
$this->mTokens = array();
$this->mVars = new AbuseFilterVariableHolder;
$this->mPos = 0;
$this->mDebug = false;
$this->mSubexpressions = array();
}
public function checkSyntax( $filter ) {
@ -411,6 +413,28 @@ class AbuseFilterParser {
return ( strlen($a) < strlen($b) ) ? -1 : 1;
}
protected function createSubexpression( $value, $tokens, $type = null ) {
if ($type)
$data = new AFPData( $type, $value );
else
$data = AFPData::newFromPHPVar( $value );
if (!$this->mDebug)
return $data;
if (!$this->mSubexpressions)
$this->mSubexpressions = array();
$thisData = array(
'tokens' => $tokens,
'value' => $data,
);
$this->mSubexpressions[] = $thisData;
return $data;
}
/* Levels */
/** Handles unexpected characters after the expression */

View file

@ -218,6 +218,11 @@ class AFComputedVariable {
$cutOff = $parameters['cutoff'];
$title = Title::makeTitle( $parameters['namespace'], $parameters['title'] );
if (!$title->exists()) {
$result = '';
break;
}
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( 'revision', 'distinct rev_user_text',
array(