commit cc3306f21a3956cad9f1601000f24c16dc45a7ec
parent b017ba9dbe2a66c5a67da4f87dd9401dd8320e88
Author: Michael Muller <mmuller@enduden.com>
Date: Wed, 23 Oct 2019 19:42:25 -0400
Fix abort on pgm change to undefined part
Diffstat:
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/Misc/MiddleWare.cpp b/src/Misc/MiddleWare.cpp
@@ -472,6 +472,12 @@ public:
return;
assert(actual_load[npart] <= pending_load[npart]);
+ if(!filename || !*filename){
+ fprintf(stderr, "Warning: failed to load undefined part<%s>\n",
+ filename);
+ return;
+ }
+
//load part in async fashion when possible
#ifndef WIN32
auto alloc = std::async(std::launch::async,
@@ -1576,8 +1582,10 @@ static rtosc::Ports middlewareReplyPorts = {
Bank &bank = impl.master->bank;
const int part = rtosc_argument(msg, 0).i;
const int program = rtosc_argument(msg, 1).i + 128*bank.bank_lsb;
- impl.loadPart(part, impl.master->bank.ins[program].filename.c_str(), impl.master, d);
- impl.uToB->write(("/part"+to_s(part)+"/Pname").c_str(), "s", impl.master->bank.ins[program].name.c_str());
+ const char *fn = impl.master->bank.ins[program].filename.c_str();
+ impl.loadPart(part, fn, impl.master, d);
+ impl.uToB->write(("/part"+to_s(part)+"/Pname").c_str(), "s",
+ fn ? impl.master->bank.ins[program].name.c_str() : "");
rEnd},
{"setbank:c", 0, 0,
rBegin;