FabricMC / Enigma

This is a fork of cuchaz's Enigma, a deobfuscation/remapping tool for Java software.
GNU Lesser General Public License v3.0
426 stars 112 forks source link

NullPointerException when checking if a class is a record due to super class being null #509

Closed mudkipdev closed 1 year ago

mudkipdev commented 1 year ago

When I open a Java 8 .jar containing no records:

java.lang.NullPointerException: Cannot invoke "cuchaz.enigma.translation.representation.entry.ClassEntry.getName()" because "this.superClass" is null
    at cuchaz.enigma.translation.representation.entry.ClassDefEntry.isRecord(ClassDefEntry.java:78)
    at cuchaz.enigma.gui.util.GuiUtil.getClassIcon(GuiUtil.java:158)
    at cuchaz.enigma.gui.ClassSelector$3.getTreeCellRendererComponent(ClassSelector.java:109)
    at java.desktop/javax.swing.plaf.basic.BasicTreeUI$NodeDimensionsHandler.getNodeDimensions(BasicTreeUI.java:3223)
    at java.desktop/javax.swing.tree.AbstractLayoutCache.getNodeDimensions(AbstractLayoutCache.java:497)
    at java.desktop/javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize(VariableHeightLayoutCache.java:1344)
    at java.desktop/javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.expand(VariableHeightLayoutCache.java:1465)
    at java.desktop/javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.expand(VariableHeightLayoutCache.java:1272)
    at java.desktop/javax.swing.tree.VariableHeightLayoutCache.rebuild(VariableHeightLayoutCache.java:728)
    at java.desktop/javax.swing.tree.VariableHeightLayoutCache.setModel(VariableHeightLayoutCache.java:111)
    at java.desktop/javax.swing.plaf.basic.BasicTreeUI.setModel(BasicTreeUI.java:506)
    at java.desktop/javax.swing.plaf.basic.BasicTreeUI$Handler.propertyChange(BasicTreeUI.java:3903)
    at com.formdev.flatlaf.ui.FlatTreeUI.lambda$createPropertyChangeListener$0(FlatTreeUI.java:261)
    at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343)
    at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335)
    at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268)
    at java.desktop/java.awt.Component.firePropertyChange(Component.java:8722)
    at java.desktop/javax.swing.JTree.setModel(JTree.java:945)
    at cuchaz.enigma.gui.ClassSelector.setClasses(ClassSelector.java:198)
    at cuchaz.enigma.gui.Gui.setObfClasses(Gui.java:316)
    at cuchaz.enigma.gui.GuiController.refreshClasses(GuiController.java:398)
    at cuchaz.enigma.gui.GuiController.lambda$openJar$0(GuiController.java:129)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)