From 4586015fc092be9139de9fd40a2cd106aaf07015 Mon Sep 17 00:00:00 2001 From: Jan S Date: Sun, 24 Apr 2022 11:32:25 +0200 Subject: [PATCH] fix(gui): resolve NPE on project save (#1463)(PR #1464) * fix(gui): NullPointerException on project save * chore(gui): ensure MainWindow.project is never null * ensure `files` in `ProjectData` in not null Co-authored-by: Skylot --- .../src/main/java/jadx/gui/settings/data/ProjectData.java | 5 +++-- jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/settings/data/ProjectData.java b/jadx-gui/src/main/java/jadx/gui/settings/data/ProjectData.java index cc84ff23..ae61884d 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/data/ProjectData.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/data/ProjectData.java @@ -4,13 +4,14 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; import jadx.api.data.impl.JadxCodeData; public class ProjectData { private int projectVersion = 1; - private List files; + private List files = new ArrayList<>(); private List treeExpansions = new ArrayList<>(); private JadxCodeData codeData = new JadxCodeData(); private List openTabs = Collections.emptyList(); @@ -21,7 +22,7 @@ public class ProjectData { } public void setFiles(List files) { - this.files = files; + this.files = Objects.requireNonNull(files); } public List getTreeExpansions() { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java index 02f48f66..fa12bcec 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -76,6 +76,7 @@ import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import org.fife.ui.rsyntaxtextarea.Theme; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -178,7 +179,8 @@ public class MainWindow extends JFrame { private final transient JadxSettings settings; private final transient CacheObject cacheObject; private final transient BackgroundExecutor backgroundExecutor; - private transient JadxProject project; + @NotNull + private transient JadxProject project = new JadxProject(); private transient Action newProjectAction; private transient Action saveProjectAction; @@ -516,7 +518,7 @@ public class MainWindow extends JFrame { return jadxProject.getFilePaths(); } - public void updateProject(JadxProject jadxProject) { + public void updateProject(@NotNull JadxProject jadxProject) { jadxProject.setSettings(settings); jadxProject.setMainWindow(this); this.project = jadxProject; -- GitLab