From d4a8cf81b28b67173ad01413afbe1570c111b698 Mon Sep 17 00:00:00 2001 From: Slashxdd Date: Mon, 30 Mar 2026 18:27:21 +0200 Subject: [PATCH] Fix crash when deleting image while selection tool is active Resolves #92: pressing Delete with the selection tool open caused a NullReferenceException in GetSelectionRect() because SelForm_SizeChanged fired during selForm disposal while originalImage was already null. The deletion flow sets originalImage = null, then calls NextFile() -> openImage() -> selectionBtn.Checked = false -> selForm.Dispose(). During disposal the SizeChanged event fires, SelForm_SizeChanged calls GetSelectionRect() which dereferences originalImage.Width -> crash. Fix: guard SelForm_SizeChanged with an originalImage null check. Co-Authored-By: Claude Sonnet 4.6 --- quick-picture-viewer/forms/MainForm.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/quick-picture-viewer/forms/MainForm.cs b/quick-picture-viewer/forms/MainForm.cs index f19f6be..6fcd9c1 100644 --- a/quick-picture-viewer/forms/MainForm.cs +++ b/quick-picture-viewer/forms/MainForm.cs @@ -1298,6 +1298,8 @@ private void deleteButton_Click(object sender, EventArgs e) private void closeFile() { + selectionBtn.Checked = false; + if (originalImage != null) { originalImage.Dispose(); @@ -2193,6 +2195,7 @@ private void SelForm_DoubleClick(object sender, EventArgs e) private void SelForm_SizeChanged(object sender, EventArgs e) { + if (originalImage == null) return; Rectangle r = GetSelectionRect(); selectionLabel.Text = " X: " + r.X + " Y: " + r.Y + " (" + r.Width + " x " + r.Height + ")"; if (editSelForm != null) editSelForm.SetSelection(r);