From a54192db4bcdb8f0241c9c1082c5228d1694887c Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Mon, 9 Nov 2009 16:57:17 -0500
Subject: For EXT-2335 Diagnose warning spam: "LLInventoryPanel::buildNewViews
 called with invalid objectp->mType"

Trivial fix to just ignore reading in items that have unknown/none asset type.
---
 indra/newview/llinventorymodel.cpp | 16 ++++++++++++----
 indra/newview/llinventorypanel.cpp |  4 ++--
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index baf34b42ff..b41695fd34 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -1823,17 +1823,25 @@ void LLInventoryModel::addCategory(LLViewerInventoryCategory* category)
 void LLInventoryModel::addItem(LLViewerInventoryItem* item)
 {
 	//llinfos << "LLInventoryModel::addItem()" << llendl;
+
+	
+	// This can happen if assettype enums change.  This can be a backwards compatibility issue 
+	// in some viewer prototypes prior to when the AT_LINK enum changed from 23 to 24.
+	if ((item->getType() == LLAssetType::AT_NONE)
+		|| LLAssetType::lookup(item->getType()) == LLAssetType::badLookup())
+	{
+		llwarns << "Got bad asset type for item ( name: " << item->getName() << " type: " << item->getType() << " inv-type: " << item->getInventoryType() << " ), ignoring." << llendl;
+		return;
+	}
 	if(item)
 	{
 		// This condition means that we tried to add a link without the baseobj being in memory.
 		// The item will show up as a broken link.
 		if (item->getIsBrokenLink())
 		{
-			llwarns << "Add link item without baseobj present ( name: " << item->getName() << " itemID: " << item->getUUID() << " assetID: " << item->getAssetUUID() << " )  parent: " << item->getParentUUID() << llendl;
-//			llassert_always(FALSE); // DO NOT MERGE THIS IN.  This is an AVP debugging line.  If this line triggers, it means that you just loaded in a broken link.  Unless that happens because you actually deleted a baseobj without deleting the link, it's indicative of a serious problem (likely with your inventory) and should be diagnosed.
+			llinfos << "Adding broken link ( name: " << item->getName() << " itemID: " << item->getUUID() << " assetID: " << item->getAssetUUID() << " )  parent: " << item->getParentUUID() << llendl;
 		}
 		mItemMap[item->getUUID()] = item;
-		//mInventory[item->getUUID()] = item;
 	}
 }
 
@@ -2175,7 +2183,7 @@ bool LLInventoryModel::loadSkeleton(
 						// This can happen if the linked object's baseobj is removed from the cache but the linked object is still in the cache.
 						if (item->getIsBrokenLink())
 						{
-							llinfos << "Attempted to cached link item without baseobj present ( itemID: " << item->getUUID() << " assetID: " << item->getAssetUUID() << " ) " << llendl;
+							llinfos << "Attempted to add cached link item without baseobj present ( name: " << item->getName() << " itemID: " << item->getUUID() << " assetID: " << item->getAssetUUID() << " ).  Ignoring and invalidating " << cat->getName() << " . " << llendl;
 							invalid_categories.insert(cit->second);
 							continue;
 						}
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 7f69ce9641..9a71e53441 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -371,7 +371,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
 						// this object was probably moved, check its parent
 						if ((mask & LLInventoryObserver::STRUCTURE) != LLInventoryObserver::STRUCTURE)
 						{
-							llwarns << *id_it << " is in model and in view, but STRUCTURE flag not set" << llendl;
+							llwarns << *id_it << " is in model and in view, but STRUCTURE flag not set" << " for model (Name :" << model_item->getName() << " )" << llendl;
 						}
 
 						LLFolderViewFolder* new_parent = (LLFolderViewFolder*)mFolders->getItemByID(model_item->getParentUUID());
@@ -472,7 +472,7 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
 			if (objectp->getType() <= LLAssetType::AT_NONE ||
 				objectp->getType() >= LLAssetType::AT_COUNT)
 			{
-				lldebugs << "LLInventoryPanel::buildNewViews called with invalid objectp->mType : " << 
+				llwarns << "LLInventoryPanel::buildNewViews called with invalid objectp->mType : " << 
 					((S32) objectp->getType()) << " name " << objectp->getName() << " UUID " << objectp->getUUID() << llendl;
 				return;
 			}
-- 
cgit v1.2.3