diff --git a/includes/user/UserOptionsManager.php b/includes/user/UserOptionsManager.php index 55b21231f98..6c640d6f5fa 100644 --- a/includes/user/UserOptionsManager.php +++ b/includes/user/UserOptionsManager.php @@ -176,7 +176,7 @@ class UserOptionsManager extends UserOptionsLookup { if ( $flags & self::EXCLUDE_DEFAULTS ) { $defaultOptions = $this->defaultOptionsLookup->getDefaultOptions(); foreach ( $options as $option => $value ) { - if ( isset( $defaultOptions[$option] ) + if ( array_key_exists( $option, $defaultOptions ) && $this->isValueEqual( $value, $defaultOptions[$option] ) ) { unset( $options[$option] ); diff --git a/tests/phpunit/includes/user/UserOptionsManagerTest.php b/tests/phpunit/includes/user/UserOptionsManagerTest.php index 9754abc7ea7..211dc7204fa 100644 --- a/tests/phpunit/includes/user/UserOptionsManagerTest.php +++ b/tests/phpunit/includes/user/UserOptionsManagerTest.php @@ -88,7 +88,6 @@ class UserOptionsManagerTest extends UserOptionsLookupTest { $expected = [ // Note that the old, relaxed array_diff-approach considered null equal to false and "" 'null_vs_false' => false, - 'null_vs_string' => '', 'language' => 'en', 'variant' => 'en', 'new_option' => 'new_value',