On Mon, 9 Nov 2020 23:25:13 GMT, Alexander Zuev <kiz...@openjdk.org> 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