From a1d2b94b4c06c6ea33bf7f76c4c07578d26845f9 Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Tue, 9 Mar 2021 21:37:02 +0200
Subject: [PATCH] SL-14807 Viewer crashes when creating an experience

Opening already open and recently created experience was crashing viewer due to viewer treating 'edit_experience' as part of floater's key.
---
 indra/newview/llfloaterexperienceprofile.cpp | 14 ++++++++++++++
 indra/newview/llfloaterexperienceprofile.h   |  2 ++
 2 files changed, 16 insertions(+)

diff --git a/indra/newview/llfloaterexperienceprofile.cpp b/indra/newview/llfloaterexperienceprofile.cpp
index 2c9a8e64b7a..a99a096ea7b 100644
--- a/indra/newview/llfloaterexperienceprofile.cpp
+++ b/indra/newview/llfloaterexperienceprofile.cpp
@@ -211,6 +211,20 @@ bool LLFloaterExperienceProfile::experiencePermission( LLHandle<LLFloaterExperie
     return false;
 }
 
+bool LLFloaterExperienceProfile::matchesKey(const LLSD& key)
+{
+    if (key.has("experience_id"))
+    {
+        return mExperienceId == key["experience_id"].asUUID();
+    }
+    else if (key.isUUID())
+    {
+        return mExperienceId == key.asUUID();
+    }
+    // Assume NULL uuid
+    return mExperienceId.isNull();
+}
+
 
 void LLFloaterExperienceProfile::onClickEdit()
 {
diff --git a/indra/newview/llfloaterexperienceprofile.h b/indra/newview/llfloaterexperienceprofile.h
index 1394418d911..f9b6e2e2ebf 100644
--- a/indra/newview/llfloaterexperienceprofile.h
+++ b/indra/newview/llfloaterexperienceprofile.h
@@ -51,6 +51,8 @@ class LLFloaterExperienceProfile : public LLFloater
 
     LLFloaterExperienceProfile(const LLSD& data);
     virtual ~LLFloaterExperienceProfile();
+    
+    /* virtual */ bool matchesKey(const LLSD& key);
 
     LLUUID getExperienceId() const { return mExperienceId; }
     void setPreferences( const LLSD& content );
-- 
GitLab