From f98a24fb8ac8fcaae61a4e31f49e774c1b83a046 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 26 Jan 2019 19:29:26 -0800 Subject: Don't try to clean up the async ringbuffer if it isn't allocated --- Alc/alc.cpp | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/Alc/alc.cpp b/Alc/alc.cpp index e42ec20f..d05d1431 100644 --- a/Alc/alc.cpp +++ b/Alc/alc.cpp @@ -2452,24 +2452,27 @@ ALCcontext::~ALCcontext() } TRACE("Freed " SZFMT " listener property object%s\n", count, (count==1)?"":"s"); - count = 0; - auto evt_vec = AsyncEvents->getReadVector(); - while(evt_vec.first.len > 0) + if(AsyncEvents) { - reinterpret_cast(evt_vec.first.buf)->~AsyncEvent(); - evt_vec.first.buf += sizeof(AsyncEvent); - evt_vec.first.len -= 1; - ++count; - } - while(evt_vec.second.len > 0) - { - reinterpret_cast(evt_vec.second.buf)->~AsyncEvent(); - evt_vec.second.buf += sizeof(AsyncEvent); - evt_vec.second.len -= 1; - ++count; + count = 0; + auto evt_vec = AsyncEvents->getReadVector(); + while(evt_vec.first.len > 0) + { + reinterpret_cast(evt_vec.first.buf)->~AsyncEvent(); + evt_vec.first.buf += sizeof(AsyncEvent); + evt_vec.first.len -= 1; + ++count; + } + while(evt_vec.second.len > 0) + { + reinterpret_cast(evt_vec.second.buf)->~AsyncEvent(); + evt_vec.second.buf += sizeof(AsyncEvent); + evt_vec.second.len -= 1; + ++count; + } + if(count > 0) + TRACE("Destructed " SZFMT " orphaned event%s\n", count, (count==1)?"":"s"); } - if(count > 0) - TRACE("Destructed " SZFMT " orphaned event%s\n", count, (count==1)?"":"s"); ALCdevice_DecRef(Device); } -- cgit v1.2.3