From 1a09fee8e1f9ca5319276ede10e36cffe7284a1a Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Fri, 3 Nov 2017 16:19:54 -0400 Subject: [FIXED] Access (read) violation using a LLVivoxVoiceClient::sessionState() after it's been free'ed The shared pointer is passed by reference to LLVivoxVoiceClient::deleteSession() where mSessionsByHandle.erase(iter) removes the last reference causing it to destruct while still being accessed later on in the function. (from Kitty Barnett) --- indra/newview/llvoicevivox.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 285ce298b0..eda3bfe0ee 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -5694,7 +5694,8 @@ void LLVivoxVoiceClient::deleteAllSessions() while (!mSessionsByHandle.empty()) { - deleteSession(mSessionsByHandle.begin()->second); + const sessionStatePtr_t session = mSessionsByHandle.begin()->second; + deleteSession(session); } } -- cgit v1.2.3