zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

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:
Msrc/Misc/MiddleWare.cpp | 12++++++++++--
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;