From 5220b0903ce82c0365a07a92ae98fd54cc923bf1 Mon Sep 17 00:00:00 2001
From: andreykproductengine <akleshchev@productengine.com>
Date: Tue, 3 Mar 2015 17:41:34 +0200
Subject: MAINT-4897 FIXED Frequent error when texturing a linkset - "Unable to
 add texture. Please wait a few seconds and try again."

---
 indra/newview/lltooldraganddrop.cpp | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index b077cad9f8..4e710747c5 100755
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -995,9 +995,15 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
 		return TRUE;
 	}
 
-	// In case the inventory has not been updated (e.g. due to some recent operation
-	// causing a dirty inventory), stall the user while fetching the inventory.
-	if (hit_obj->isInventoryDirty())
+	// In case the inventory has not been loaded (e.g. due to some recent operation
+	// causing a dirty inventory) and we can do an update, stall the user
+	// while fetching the inventory.
+	//
+	// Note: fetch only if inventory is both dirty and not present since previously checked faces
+	// could have requested new fetch for same item (removed inventory and marked as dirty=false).
+	// Objects without listeners (dirty==true and inventory!=NULL. In this specific case - before
+	// first fetch) shouldn't be updated either since we won't receive any changes.
+	if (hit_obj->isInventoryDirty() && hit_obj->getInventoryRoot() == NULL)
 	{
 		hit_obj->fetchInventoryFromServer();
 		LLSD args;
-- 
cgit v1.2.3