diff --git a/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/gui/tracermi/launcher/AbstractTraceRmiLaunchOffer.java b/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/gui/tracermi/launcher/AbstractTraceRmiLaunchOffer.java index 6901d4ecef..63f3015f45 100644 --- a/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/gui/tracermi/launcher/AbstractTraceRmiLaunchOffer.java +++ b/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/gui/tracermi/launcher/AbstractTraceRmiLaunchOffer.java @@ -402,14 +402,22 @@ public abstract class AbstractTraceRmiLaunchOffer implements TraceRmiLaunchOffer args.put(param.name(), param.decode(str)); continue; } - // Perhaps wrong type; was saved in older version. - Object fallback = ConfigStateField.getState(state, param.type(), param.name()); - if (fallback != null) { - args.put(param.name(), ValStr.from(fallback)); - continue; + // NB: This code handles parameters formatted via a previous version. + // The try-catch was introduced to avoid NPEs from null file paths + try { + // Perhaps wrong type; was saved in older version. + Object fallback = ConfigStateField.getState(state, param.type(), param.name()); + if (fallback != null) { + args.put(param.name(), ValStr.from(fallback)); + continue; + } + Msg.warn(this, "Could not load saved launcher arg '%s' (%s)".formatted(param.name(), + param.display())); + } + catch (Exception e) { + Msg.warn(this, "Could not load saved launcher arg '%s' (%s) - %s".formatted(param.name(), + param.display(), e.getMessage())); } - Msg.warn(this, "Could not load saved launcher arg '%s' (%s)".formatted(param.name(), - param.display())); } return args; }