From 892f99af3b51ea08e6e77d5945e6e9ca24d4223d Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Thu, 21 Aug 2014 14:18:35 -0400
Subject: [PATCH] MAINT-4158 WIP - fix for bug caused by multiple wearables
 with the same asset id

---
 indra/llappearance/llavatarappearance.cpp | 21 +++++++++++++++++++++
 indra/newview/llagentwearables.cpp        |  5 +++++
 indra/newview/llvoavatar.cpp              |  2 +-
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 6fdf9e2e072..c1107f674e4 100755
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -480,6 +480,18 @@ void LLAvatarAppearance::computeBodySize()
 				 	knee.mV[VZ] * hip_scale.mV[VZ] -
 				 	ankle.mV[VZ] * knee_scale.mV[VZ] -
 				 	foot.mV[VZ] * ankle_scale.mV[VZ];
+	// if (isSelf())
+	// {
+	// 	LL_INFOS("Avatar") << "mAvatarOffset.mV[VZ] " << mAvatarOffset.mV[VZ] << LL_ENDL;
+	// 	LL_INFOS("Avatar") << "mPelvisToFoot " << mPelvisToFoot << LL_ENDL;
+	// 	LL_INFOS("Avatar") << "- hip.mV[VZ] " << hip.mV[VZ] << LL_ENDL;
+	// 	LL_INFOS("Avatar") << "- pelvis_scale.mV[VZ] " << pelvis_scale.mV[VZ] << LL_ENDL;
+	// 	LL_INFOS("Avatar") << "- knee.mV[VZ] " << knee.mV[VZ] << LL_ENDL;
+	// 	LL_INFOS("Avatar") << "- ankle.mV[VZ] " << ankle.mV[VZ] << LL_ENDL;
+	// 	LL_INFOS("Avatar") << "- knee_scale.mV[VZ] " << knee_scale.mV[VZ] << LL_ENDL;
+	// 	LL_INFOS("Avatar") << "- foot.mV[VZ] " << foot.mV[VZ] << LL_ENDL;
+	// 	LL_INFOS("Avatar") << "- ankle_scale.mV[VZ] " << ankle_scale.mV[VZ] << LL_ENDL;
+	// }
 
 	LLVector3 new_body_size;
 	new_body_size.mV[VZ] = mPelvisToFoot +
@@ -490,6 +502,10 @@ void LLAvatarAppearance::computeBodySize()
 					   neck.mV[VZ] * chest_scale.mV[VZ] + 
 					   chest.mV[VZ] * torso_scale.mV[VZ] + 
 					   torso.mV[VZ] * pelvis_scale.mV[VZ]; 
+	// if (isSelf())
+	// {
+	// 	LL_INFOS("Avatar") << "new_body_size.mV[VZ] " << new_body_size.mV[VZ] << LL_ENDL;
+	// }
 
 	// TODO -- measure the real depth and width
 	new_body_size.mV[VX] = DEFAULT_AGENT_DEPTH;
@@ -502,6 +518,11 @@ void LLAvatarAppearance::computeBodySize()
 	{
 		mBodySize = new_body_size;
 	}
+
+	// if (isSelf())
+	// {
+	// 	LL_INFOS("Avatar") << "mBodySize.mV[VZ] " << mBodySize.mV[VZ] << LL_ENDL;
+	// }
 }
 
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 890fc9a8d97..215699dcc94 100755
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1009,6 +1009,10 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 			continue;
 		}
 
+		// Don't care about this case - ordering of wearables with the same asset id has no effect.
+		// Causes the two-alphas error case in MAINT-4158.
+		// We should actually disallow wearing two wearables with the same asset id.
+#if 0
 		if (curr_wearable->getName() != new_item->getName() ||
 			curr_wearable->getItemID() != new_item->getUUID())
 		{
@@ -1019,6 +1023,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 			mismatched++;
 			continue;
 		}
+#endif
 		// If we got here, everything matches.
 		matched++;
 	}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 509de74ac34..e5473e92d93 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -5625,7 +5625,7 @@ const LLViewerJointAttachment *LLVOAvatar::attachObject(LLViewerObject *viewer_o
 }
 
 //-----------------------------------------------------------------------------
-// attachObject()
+// getNumAttachments()
 //-----------------------------------------------------------------------------
 U32 LLVOAvatar::getNumAttachments() const
 {
-- 
GitLab