From cc3306f21a3956cad9f1601000f24c16dc45a7ec Mon Sep 17 00:00:00 2001 From: Michael Muller Date: Wed, 23 Oct 2019 19:42:52 -0400 Subject: [PATCH] Fix abort on pgm change to undefined part --- src/Misc/MiddleWare.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Misc/MiddleWare.cpp b/src/Misc/MiddleWare.cpp index e10884e6..cf7b886d 100644 --- 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; -- 2.11.4.GIT