From 7e2b88a32b0bed07abcf760bd0adf3403ec2ede2 Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Mon, 30 Nov 2009 12:07:52 -0500
Subject: [PATCH] EXT-2867 : Crash after toggling gestures on and off

Observer wasn't being removed when class was deleted.

--HG--
branch : avatar-pipeline
---
 indra/newview/llfloatergesture.cpp    | 1 +
 indra/newview/llinventoryobserver.cpp | 9 +++++++++
 indra/newview/llinventoryobserver.h   | 3 ++-
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index 0f8e4c10d78..d51a5d2a035 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -168,6 +168,7 @@ LLFloaterGesture::~LLFloaterGesture()
 	LLGestureManager::instance().removeObserver(mObserver);
 	delete mObserver;
 	mObserver = NULL;
+	gInventory.removeObserver(this);
 }
 
 // virtual
diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp
index 06f4b36df30..315fce5575d 100644
--- a/indra/newview/llinventoryobserver.cpp
+++ b/indra/newview/llinventoryobserver.cpp
@@ -63,6 +63,15 @@
 #include "llsdutil.h"
 #include <deque>
 
+LLInventoryObserver::LLInventoryObserver()
+{
+}
+
+// virtual
+LLInventoryObserver::~LLInventoryObserver()
+{
+}
+
 void LLInventoryCompletionObserver::changed(U32 mask)
 {
 	// scan through the incomplete items and move or erase them as
diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h
index 73b25a8ed0a..4ee6c48cb1e 100644
--- a/indra/newview/llinventoryobserver.h
+++ b/indra/newview/llinventoryobserver.h
@@ -63,7 +63,8 @@ class LLInventoryObserver
 		CALLING_CARD = 32,	// online, grant status, cancel, etc change
 		ALL = 0xffffffff
 	};
-	virtual ~LLInventoryObserver() {};
+	LLInventoryObserver();
+	virtual ~LLInventoryObserver();
 	virtual void changed(U32 mask) = 0;
 	std::string mMessageName; // used by Agent Inventory Service only. [DEV-20328]
 };
-- 
GitLab