Fix occasional crash when saving MIDI.

I can't figure out why a change has a NULL note; that shouldn't happen, but it
does.  Worse case scenario is some undo loss, so better to print something
informative and soldier on than crash.  Hopefully this will help track down the
real cause with more testing.
This commit is contained in:
David Robillard 2014-12-29 22:01:41 -05:00
parent ee8dbdb009
commit 54c085d931

View file

@ -582,8 +582,16 @@ MidiModel::NoteDiffCommand::marshal_change (const NoteChange& change)
} }
ostringstream id_str; ostringstream id_str;
if (change.note) {
id_str << change.note->id(); id_str << change.note->id();
xml_change->add_property ("id", id_str.str()); xml_change->add_property ("id", id_str.str());
} else if (change.note_id) {
warning << _("Change has no note, using note ID") << endmsg;
id_str << change.note_id;
xml_change->add_property ("id", id_str.str());
} else {
error << _("Change has no note or note ID") << endmsg;
}
return *xml_change; return *xml_change;
} }
@ -593,6 +601,7 @@ MidiModel::NoteDiffCommand::unmarshal_change (XMLNode *xml_change)
{ {
XMLProperty* prop; XMLProperty* prop;
NoteChange change; NoteChange change;
change.note_id = 0;
if ((prop = xml_change->property("property")) != 0) { if ((prop = xml_change->property("property")) != 0) {
change.property = (Property) string_2_enum (prop->value(), change.property); change.property = (Property) string_2_enum (prop->value(), change.property);