Guard recursion flag against exceptions.

To avoid misleading errors in case of failed initialization,
flags used to protected against recursion need to be reset
in case of an exception being thrown.

Change-Id: Ifbc1db4b827012177fcfd271981179ebb2329b52
This commit is contained in:
daniel 2014-06-24 15:55:39 +02:00
parent 90f7fbd20a
commit 9636d44448

View file

@ -308,22 +308,28 @@ class RequestContext implements IContextSource {
global $wgLanguageCode, $wgContLang;
$request = $this->getRequest();
$user = $this->getUser();
try {
$request = $this->getRequest();
$user = $this->getUser();
$code = $request->getVal( 'uselang', $user->getOption( 'language' ) );
$code = self::sanitizeLangCode( $code );
$code = $request->getVal( 'uselang', $user->getOption( 'language' ) );
$code = self::sanitizeLangCode( $code );
wfRunHooks( 'UserGetLanguageObject', array( $user, &$code, $this ) );
wfRunHooks( 'UserGetLanguageObject', array( $user, &$code, $this ) );
if ( $code === $wgLanguageCode ) {
$this->lang = $wgContLang;
} else {
$obj = Language::factory( $code );
$this->lang = $obj;
if ( $code === $wgLanguageCode ) {
$this->lang = $wgContLang;
} else {
$obj = Language::factory( $code );
$this->lang = $obj;
}
unset( $this->recursion );
}
catch ( Exception $ex ) {
unset( $this->recursion );
throw $ex;
}
unset( $this->recursion );
}
return $this->lang;