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