From 27b15aeb1c524c890422f5bf54499ec0a6f8f276 Mon Sep 17 00:00:00 2001 From: RedArms <47068819+RedArms@users.noreply.github.com> Date: Thu, 4 Dec 2025 20:25:45 +0100 Subject: [PATCH] fix(gui): resolve NPE with smali breakpoint (#2717) (PR #2718) * fix(gui): resolve exception in search dialog on project reload (#2714) * Revert "fix(gui): resolve exception in search dialog on project reload (#2714)" This reverts commit 74c52a88844604897fcf013957e5ef883e1b5cfe. --------- Co-authored-by: Skylot <118523+skylot@users.noreply.github.com> --- .../main/java/jadx/gui/ui/codearea/SmaliArea.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java index fb1226e60..bbb844a7d 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java @@ -386,7 +386,7 @@ public final class SmaliArea extends AbstractCodeArea { } void remove() { - gutter.removeTrackingIcon(iconInfo); + safeRemoveTrackingIcon(iconInfo); if (!this.disabled) { removeLineHighlight(highlightTag); } @@ -395,7 +395,7 @@ public final class SmaliArea extends AbstractCodeArea { void setDisabled(boolean disabled) { if (disabled) { if (!this.disabled) { - gutter.removeTrackingIcon(iconInfo); + safeRemoveTrackingIcon(iconInfo); removeLineHighlight(highlightTag); try { iconInfo = gutter.addLineTrackingIcon(line, ICON_BREAKPOINT_DISABLED); @@ -405,7 +405,7 @@ public final class SmaliArea extends AbstractCodeArea { } } else { if (this.disabled) { - gutter.removeTrackingIcon(this.iconInfo); + safeRemoveTrackingIcon(this.iconInfo); try { iconInfo = gutter.addLineTrackingIcon(line, ICON_BREAKPOINT); highlightTag = addLineHighlight(line, BREAKPOINT_LINE_COLOR); @@ -417,6 +417,13 @@ public final class SmaliArea extends AbstractCodeArea { this.disabled = disabled; } } + + private void safeRemoveTrackingIcon(GutterIconInfo iconInfo) { + if (gutter != null && iconInfo != null) { + gutter.removeTrackingIcon(iconInfo); + } + } + } @Override