From a1cfce861ad949cec561d8dbf3d296f8847aa8a6 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Fri, 19 Feb 2010 15:08:28 +0200 Subject: Partial fix for major bug EXT-5524 (Crash in LLVoiceClient when quitting viewer without login). - Used call of LLVoiceClient::instanceExists() instead of gVoiceClient in check in LLVoiceChannel destructor to avoid crash when quitting viewer by closing console window before login. So now crash won't happen in LLVoiceClient::removeObserver(). But crash will occur in other destructors later, so further investigation needed. --HG-- branch : product-engine --- indra/newview/llvoicechannel.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index dfd67d0c38..fac7fa6a18 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -140,7 +140,10 @@ LLVoiceChannel::LLVoiceChannel(const LLUUID& session_id, const std::string& sess LLVoiceChannel::~LLVoiceChannel() { // Don't use LLVoiceClient::getInstance() here -- this can get called during atexit() time and that singleton MAY have already been destroyed. - if(gVoiceClient) + // Using call of instanceExists() instead of gVoiceClient in check to avoid crash in LLVoiceClient::removeObserver() + // when quitting viewer by closing console window before login (though in case of such quit crash will occur + // later in other destructors anyway). EXT-5524 + if(LLVoiceClient::instanceExists()) { gVoiceClient->removeObserver(this); } -- cgit v1.2.3