On Mon, 9 Nov 2020 23:25:13 GMT, Alexander Zuev <[email protected]> wrote:
>> I meant this code at the start of the method:
>> ` if (!(UIManager.getLookAndFeel() instanceof BasicLookAndFeel)) {
>> uninstall();
>> return;
>> }`
>> If "uninstall" will not solve the problem and the code added in this fix
>> will not be executed, then we will get the same leak?
>
> The code block here with uninstall is called if currently installed LAF is
> not derived from BasicLAF in which case we will not have this problem in the
> first place - the only place where we are setting menuInputMap variable is in
> this method down the line so it never gets initialized. And no, calling
> uninstall() unconditionally will not solve the problem because uninstall()
> does not change this value either.
I guess that the uninstall() above is called when the L&F was basic(since
BasicPopupMenuUI is used) and then changed for some reason, so when the method
in the BasicPopupMenuUI.java will be called we will find that the current L&F
is different and call "uninstall()", so this is my question: will the leak will
exist in that case? I mean the code changed by the current fix will not be
executed since we will exit after "uninstall()".
-------------
PR: https://git.openjdk.java.net/jdk/pull/1035