From 19d641f6b421866da902a15a655afbc8c5db35c5 Mon Sep 17 00:00:00 2001 From: Michael Gregorius Date: Sun, 19 Apr 2015 17:11:03 +0200 Subject: [PATCH] Might fix 1981 ("Midi Import crash in master branch") This commit adds checks for conditions that are asserted during calls to get_atom_value. It might fix a crash that is described in 1981. Unfortunately no files have been attached to that issue. However, I was able to crash LMMS using a local file and this crash is gone with this fix. So hopefully this change also fixes the crashes described in 1981. --- plugins/MidiImport/MidiImport.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/plugins/MidiImport/MidiImport.cpp b/plugins/MidiImport/MidiImport.cpp index 25c204368..f5f2c507e 100644 --- a/plugins/MidiImport/MidiImport.cpp +++ b/plugins/MidiImport/MidiImport.cpp @@ -374,19 +374,22 @@ bool MidiImport::readSMF( TrackContainer* tc ) if( evt->chan == -1 ) { bool handled = false; - if( evt->is_update() ) + if( evt->is_update() ) { QString attr = evt->get_attribute(); - if( attr == "tracknames" ) { + if( attr == "tracknames" && evt->get_update_type() == 'a' ) { trackName = evt->get_atom_value(); handled = true; } } - if(!handled) { + if( !handled ) { printf("MISSING GLOBAL THINGY\n"); - printf(" %d %d %f %s %s\n", (int) evt->chan, - evt->get_type_code(), evt->time, - evt->get_attribute(), evt->get_atom_value() ); + if ( evt->is_update() && evt->get_update_type() == 'a' ) + { + printf(" %d %d %f %s %s\n", (int) evt->chan, + evt->get_type_code(), evt->time, + evt->get_attribute(), evt->get_atom_value() ); + } // Global stuff } }