--- qsampler/trunk/src/qsamplerDeviceStatusForm.cpp 2019/12/22 13:10:04 3666 +++ qsampler/trunk/src/qsamplerDeviceStatusForm.cpp 2019/12/22 13:29:09 3667 @@ -221,12 +221,13 @@ = Device::getDeviceIDs(pMainForm->client(), Device::Midi); // hide and delete status forms whose device has been destroyed std::map::iterator iter = g_instances.begin(); - for ( ; iter != g_instances.end(); ++iter) { + while (iter != g_instances.end()) { if (deviceIDs.find(iter->first) == deviceIDs.end()) { iter->second->hide(); delete iter->second; - g_instances.erase(iter); - } + // postfix increment here to avoid iterator invalidation (crash) + g_instances.erase(iter++); + } else ++iter; } // create status forms for new devices std::set::iterator it = deviceIDs.begin();