From 8483b1799545f8076fb1d417818ae34804892891 Mon Sep 17 00:00:00 2001 From: Danila Malyutin Date: Tue, 2 Jun 2015 02:28:04 +0300 Subject: [PATCH] Initialize pointers to null on creation Fixes access violation in hello_world.ppu.elf on window close. As I understood the reason - when dtor of XAudioThread is called it checks: if (m_source_voice) Quit(); But m_source_voice isn't initialized to 0 by default so when in Quit() in tries to call some funcs from unitialized ptrs and access violation happens. --- rpcs3/Emu/Audio/XAudio2/XAudio2Thread.cpp | 4 ++++ rpcs3/Emu/Audio/XAudio2/XAudio2Thread.h | 1 + 2 files changed, 5 insertions(+) diff --git a/rpcs3/Emu/Audio/XAudio2/XAudio2Thread.cpp b/rpcs3/Emu/Audio/XAudio2/XAudio2Thread.cpp index 796d10719a..7d3f0ee957 100644 --- a/rpcs3/Emu/Audio/XAudio2/XAudio2Thread.cpp +++ b/rpcs3/Emu/Audio/XAudio2/XAudio2Thread.cpp @@ -11,6 +11,10 @@ XAudio2Thread::~XAudio2Thread() if (m_source_voice) Quit(); } +XAudio2Thread::XAudio2Thread() : m_xaudio2_instance(nullptr), m_master_voice(nullptr), m_source_voice(nullptr) +{ +} + void XAudio2Thread::Init() { HRESULT hr = S_OK; diff --git a/rpcs3/Emu/Audio/XAudio2/XAudio2Thread.h b/rpcs3/Emu/Audio/XAudio2/XAudio2Thread.h index f7eac1ba34..17eda37f13 100644 --- a/rpcs3/Emu/Audio/XAudio2/XAudio2Thread.h +++ b/rpcs3/Emu/Audio/XAudio2/XAudio2Thread.h @@ -14,6 +14,7 @@ private: public: virtual ~XAudio2Thread(); + XAudio2Thread(); virtual void Init(); virtual void Quit();