From 4473956ce061fc4225cdccc1497acfa3603b00fe Mon Sep 17 00:00:00 2001 From: Mathieu Bastian Date: Sun, 8 Nov 2026 21:30:37 +0100 Subject: [PATCH] Don't throw when cancelled right as the run starts cancel() delegated to an algorithm that is only created by execute(), so a cancel landing just after the run started threw a NullPointerException. Return false when there is no algorithm yet, and make the field volatile since it is set by the thread running the statistics and read when cancelling from another. Version 1.0.1. Co-Authored-By: Claude Sonnet 5.5 --- modules/MinimumSpanningTree/pom.xml | 2 +- .../plugin/minimumspanningtree/MinimumSpanningTree.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/MinimumSpanningTree/pom.xml b/modules/MinimumSpanningTree/pom.xml index 246355615a..d19833f9dd 100644 --- a/modules/MinimumSpanningTree/pom.xml +++ b/modules/MinimumSpanningTree/pom.xml @@ -9,7 +9,7 @@ com.carlschroedl.gephi spanning-tree-plugin - 1.0.0 + 1.0.1 nbm Minimum Spanning Tree Plugin diff --git a/modules/MinimumSpanningTree/src/main/java/com/carlschroedl/gephi/plugin/minimumspanningtree/MinimumSpanningTree.java b/modules/MinimumSpanningTree/src/main/java/com/carlschroedl/gephi/plugin/minimumspanningtree/MinimumSpanningTree.java index 56ee2c7309..b332a3c94b 100644 --- a/modules/MinimumSpanningTree/src/main/java/com/carlschroedl/gephi/plugin/minimumspanningtree/MinimumSpanningTree.java +++ b/modules/MinimumSpanningTree/src/main/java/com/carlschroedl/gephi/plugin/minimumspanningtree/MinimumSpanningTree.java @@ -16,7 +16,8 @@ public class MinimumSpanningTree implements Statistics, LongTask { private boolean cancel = false; private ProgressTicket progressTicket; - private MinimumSpanningTreeAlgorithm stAlgorithm; + // Set by the thread running the statistics, and read when cancelling from another + private volatile MinimumSpanningTreeAlgorithm stAlgorithm; private boolean directed; @@ -49,7 +50,9 @@ public String getReport() { //delegate @Override //delegate public boolean cancel() { - return stAlgorithm.cancel(); + // Can be called right as the run starts, before the algorithm exists + MinimumSpanningTreeAlgorithm algorithm = stAlgorithm; + return algorithm != null && algorithm.cancel(); } @Override