diff --git a/aegisub/audio_display.cpp b/aegisub/audio_display.cpp
index 216cc6759f3a9a4bf7f86a3b5732ac87be71c5b1..276c3c215d943b8f9e4d153f927dfc9afbb9f050 100644
--- a/aegisub/audio_display.cpp
+++ b/aegisub/audio_display.cpp
@@ -847,10 +847,14 @@ void AudioDisplay::SetFile(wxString file) {
 			UpdateImage();
 		}
 		catch (wxString &err) {
+			if (player) delete player;
+			if (provider) delete provider;
 			wxLogDebug(_T("AudioDisplay::SetFile: gotcha!"));
 			wxMessageBox(err,_T("Error loading audio"),wxICON_ERROR | wxOK);
 		}
 	}
+	
+	if (!loaded) return;
 
 	assert(loaded == (provider != NULL));