On Thu, 3 Oct 2024 00:48:55 GMT, Chen Liang <li...@openjdk.org> wrote:

>> Please review this PR which improves the safety of equality checking for 
>> DecimalFormatSymbols.
>> 
>> DecimalFormatSymbols via its setters, allows certain instance variables to 
>> be set as null. (Note that some variables are allowed to be null, and others 
>> are not.) However, non null safe comparisons are used for all variables 
>> during the equality check. This can lead to an unexpected NPE when 
>> `DecimalFormatSymbols.equals()` is invoked.
>> 
>> The nullable variables in question should be equality checked via the static 
>> `Object.equals()`. An associated regression test is added to confirm the 
>> change.
>
> Should we add an explicit whitelist of methods allowed to throw NPE, so that 
> if we add new getter/setters to DFS, we can avoid this nasty null problem for 
> the future? This whitelist will be validated by tests for sure.

Thanks for taking a look @liach . 
https://github.com/openjdk/jdk/pull/21315/commits/bd6b021cc84034d55eb6d262ade7ea19e520c1fe
 adds a test that ensures if a new NPE throwing setter is added without being 
whitelisted, this test will now fail. This should prevent mishaps like this in 
the future. While this feels a little overkill, this enforcement is done via a 
test, so it is fine by me.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/21315#issuecomment-2392323915

Reply via email to