diff --git a/src/engraving/api/v1/instrument.cpp b/src/engraving/api/v1/instrument.cpp index 8ce7bc7c6c8c5..6984f49ce17ec 100644 --- a/src/engraving/api/v1/instrument.cpp +++ b/src/engraving/api/v1/instrument.cpp @@ -59,7 +59,7 @@ void Channel::setMidiBankAndProgram(int bank, int program, bool setUserBankContr patch.prog = program; mu::engraving::Score* score = _part->score(); - score->undo(new ChangePatch(score, ch, &patch)); + score->undo(new ChangePatch(score, ch, patch)); if (setUserBankController) { score->undo(new SetUserBankController(ch, true)); diff --git a/src/engraving/dom/undo.h b/src/engraving/dom/undo.h index eaef07d28c7e5..723758529c721 100644 --- a/src/engraving/dom/undo.h +++ b/src/engraving/dom/undo.h @@ -757,8 +757,8 @@ class ChangePatch : public UndoCommand void flip(EditData*) override; public: - ChangePatch(Score* s, InstrChannel* c, const MidiPatch* pt) - : score(s), channel(c), patch(*pt) {} + ChangePatch(Score* s, InstrChannel* c, const MidiPatch& pt) + : score(s), channel(c), patch(pt) {} UNDO_NAME("ChangePatch") UNDO_CHANGED_OBJECTS({ score }) }; diff --git a/src/engraving/tests/instrumentchange_tests.cpp b/src/engraving/tests/instrumentchange_tests.cpp index e6f34e8f30b2d..4ded9ff5d3a5d 100644 --- a/src/engraving/tests/instrumentchange_tests.cpp +++ b/src/engraving/tests/instrumentchange_tests.cpp @@ -115,12 +115,12 @@ TEST_F(Engraving_InstrumentChangeTests, testMixer) InstrumentChange* ic = static_cast(s->annotations()[0]); int idx = score->staff(0)->channel(s->tick(), 0); InstrChannel* c = score->staff(0)->part()->instrument(s->tick())->channel(idx); - MidiPatch* mp = new MidiPatch; - mp->bank = 0; - mp->drum = false; - mp->name = "Viola"; - mp->prog = 41; - mp->synti = "Fluid"; + MidiPatch mp; + mp.bank = 0; + mp.drum = false; + mp.name = "Viola"; + mp.prog = 41; + mp.synti = "Fluid"; score->startCmd(TranslatableString::untranslatable("Instrument change tests")); ic->setXmlText("Mixer Viola"); score->undo(new ChangePatch(score, c, mp));