From 7e0e58c55f7ff24df1a452e796b22f028b14dbd9 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Thu, 7 Apr 2022 11:11:39 +0300
Subject: [PATCH] SL-17092 Fix a gesture upload crash

---
 indra/newview/llgesturemgr.cpp     | 11 ++++++++---
 indra/newview/llpreviewgesture.cpp |  1 -
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp
index bd881f8e7a3..489d34edca4 100644
--- a/indra/newview/llgesturemgr.cpp
+++ b/indra/newview/llgesturemgr.cpp
@@ -483,8 +483,13 @@ void LLGestureMgr::replaceGesture(const LLUUID& item_id, LLMultiGesture* new_ges
 
 	mActive[base_item_id] = new_gesture;
 
-	delete old_gesture;
-	old_gesture = NULL;
+    // replaceGesture(const LLUUID& item_id, const LLUUID& new_asset_id)
+    // replaces ids without repalcing gesture
+    if (old_gesture != new_gesture)
+    {
+        delete old_gesture;
+        old_gesture = NULL;
+    }
 
 	if (asset_id.notNull())
 	{
@@ -1107,7 +1112,7 @@ void LLGestureMgr::onLoadComplete(const LLUUID& asset_uuid,
             else
             {
                 LLMultiGesture* old_gesture = (*it).second;
-                if (old_gesture)
+                if (old_gesture && old_gesture != gesture)
                 {
                     LL_DEBUGS("GestureMgr") << "Received dupplicate " << item_id << " callback" << LL_ENDL;
                     // In case somebody managest to activate, deactivate and
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 061ecad099a..39cdb6fb04f 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -1029,7 +1029,6 @@ void LLPreviewGesture::finishInventoryUpload(LLUUID itemId, LLUUID newAssetId)
     // active map with the new pointer.				
     if (LLGestureMgr::instance().isGestureActive(itemId))
     {
-        //*TODO: This is crashing for some reason.  Fix it.
         // Active gesture edited from menu.
         LLGestureMgr::instance().replaceGesture(itemId, newAssetId);
         gInventory.notifyObservers();
-- 
GitLab