From f0887bfd0ac86c1bdede2f7aa1c2e2e89b1d9746 Mon Sep 17 00:00:00 2001 From: intealls Date: Sat, 14 Jan 2017 22:00:59 +0100 Subject: [PATCH] fix memory leak and log error checking --- src/osd/modules/sound/pa_sound.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/osd/modules/sound/pa_sound.cpp b/src/osd/modules/sound/pa_sound.cpp index 37a0afd1e34..23664e61cd7 100644 --- a/src/osd/modules/sound/pa_sound.cpp +++ b/src/osd/modules/sound/pa_sound.cpp @@ -272,6 +272,7 @@ int sound_pa::init(osd_options const &options) return 0; pa_error: + delete m_ab; osd_printf_verbose("PortAudio error: %s\n", Pa_GetErrorText(err)); Pa_Terminate(); error: @@ -406,17 +407,15 @@ void sound_pa::exit() return; #if LOG_BUFCNT - if (m_log.good()) - { - std::ofstream m_logfile(LOG_FILE); + std::ofstream m_logfile(LOG_FILE); - if (m_logfile.is_open()) { - m_logfile << m_log.str(); - m_logfile.close(); - } else { - osd_printf_verbose("PortAudio: Could not write log.\n"); - } + if (m_log.good() && m_logfile.is_open()) { + m_logfile << m_log.str(); + m_logfile.close(); } + + if (!m_log.good() || m_logfile.fail()) + osd_printf_verbose("PortAudio: Error writing log.\n"); #endif Pa_StopStream(m_pa_stream);