diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index 5649b4cab7e7eaac7576de253008041cf873174d..7d0de18c7cb98ea3dfac889a30b5ab8ebccb7bd7 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -157,8 +157,9 @@ U8* LLImageBase::allocateData(S32 size)
 			llerrs << llformat("LLImageBase::allocateData called with bad dimensions: %dx%dx%d",mWidth,mHeight,mComponents) << llendl;
 		}
 	}
-	else if (size <= 0 || (size > 4096*4096*16 && sSizeOverride == FALSE))
+	if (size < 1 || (size > 4096*4096*16 && sSizeOverride == FALSE))
 	{
+		llinfos << "width: " << mWidth << " height: " << mHeight << " components: " << mComponents << llendl ;
 		llerrs << "LLImageBase::allocateData: bad size: " << size << llendl;
 	}
 	
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 6ed95f2cbf179da3fadacbd02be092325e1f4eb7..386b636367ac799faf6e11ce5d600a7ac9b82c55 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -1883,6 +1883,11 @@ LLTexLayer* LLTexLayerTemplate::getLayer(U32 i)
 
 /*virtual*/ BOOL LLTexLayerTemplate::render(S32 x, S32 y, S32 width, S32 height)
 {
+	if(!mInfo)
+	{
+		return FALSE ;
+	}
+
 	BOOL success = TRUE;
 	updateWearableCache();
 	for (wearable_cache_t::const_iterator iter = mWearableCache.begin(); iter!= mWearableCache.end(); iter++)
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 4649b9cbef6a5dc7972b718b110815586f2794b1..49770030c6f741167b065f1d5a06aea498264018 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -1140,6 +1140,10 @@ void LLTextureCache::writeEntryAndClose(S32 idx, Entry& entry)
 			{
 				mTexturesSizeMap[entry.mID] = entry.mBodySize;
 			}
+			else if(mTexturesSizeMap.find(entry.mID) != mTexturesSizeMap.end() && mTexturesSizeMap[entry.mID] > 0)
+			{
+				llerrs << "mTexturesSizeMap / mHeaderIDMap corrupted." << llendl ;
+			}
 // 			llinfos << "Updating TE: " << idx << ": " << id << " Size: " << entry.mBodySize << " Time: " << entry.mTime << llendl;
 			mHeaderEntriesMaxWriteIdx = llmax(mHeaderEntriesMaxWriteIdx, idx);
 			mUpdatedEntryMap[idx] = entry ;
@@ -1450,6 +1454,10 @@ void LLTextureCache::purgeTextures(bool validate)
 				time_idx_set.insert(std::make_pair(entries[idx].mTime, idx));
 // 				llinfos << "TIME: " << entries[idx].mTime << " TEX: " << entries[idx].mID << " IDX: " << idx << " Size: " << entries[idx].mImageSize << llendl;
 			}
+			else
+			{
+				llerrs << "mTexturesSizeMap / mHeaderIDMap corrupted." << llendl ;
+			}
 		}
 	}
 	
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index fb78b6a4156b6d9e9f9c0752e97bad43c90a26a4..2f4a69a53c4fb021c156d9fa6ab4b4ec63bc4b9d 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -901,6 +901,16 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
 			 || !existing_inspector->getVisible()
 			 || existing_inspector->getKey()["object_id"].asUUID() != hover_object->getID()))
 		{
+						
+			// Add price to tooltip for items on sale
+			bool for_sale = for_sale_selection(nodep);
+			if(for_sale)
+			{
+				LLStringUtil::format_map_t args;
+				args["[PRICE]"] = llformat ("%d", nodep->mSaleInfo.getSalePrice());
+				tooltip_msg.append(LLTrans::getString("TooltipPrice", args) );
+			}
+
 			if (nodep->mName.empty())
 			{
 				tooltip_msg.append(LLTrans::getString("TooltipNoName"));
@@ -931,7 +941,7 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
 					if (media_impl.notNull() && (media_impl->hasMedia()))
 					{
 						is_media_displaying = true;
-						LLStringUtil::format_map_t args;
+						//LLStringUtil::format_map_t args;
 						
 						media_plugin = media_impl->getMediaPlugin();
 						if(media_plugin)
@@ -954,14 +964,17 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
 					}
 				}
 			}
-			
-			// Avoid showing tip over media that's displaying
+
+
+			// Avoid showing tip over media that's displaying unless it's for sale
 			// also check the primary node since sometimes it can have an action even though
 			// the root node doesn't
-			bool needs_tip = !is_media_displaying &&
-				(has_media || 
-				 needs_tooltip(nodep) || 
-				 needs_tooltip(LLSelectMgr::getInstance()->getPrimaryHoverNode()));
+			
+			bool needs_tip = (!is_media_displaying || 
+				              for_sale) &&
+							 (has_media || 
+							  needs_tooltip(nodep) || 
+							  needs_tooltip(LLSelectMgr::getInstance()->getPrimaryHoverNode()));
 			
 			if (show_all_object_tips || needs_tip)
 			{
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 59c54f0cadc2552598507f28b94fda8e4e0dfee8..1eaf77c3280c13466e87d114e088e4932f57ff1f 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -76,7 +76,9 @@
 	<string name="TooltipObjectIMUrl">Click to view this object's description</string>
 	<string name="TooltipMapUrl">Click to view this location on a map</string>
 	<string name="TooltipSLAPP">Click to run the secondlife:// command</string>
-	<string name="CurrentURL" value=" CurrentURL: [CurrentURL]" />
+	<string name="CurrentURL" value=" CurrentURL: [CurrentURL]" />	
+  <string name="TooltipPrice" value=" L$[PRICE]-" />
+  
 
 	<!-- text for SLURL labels -->
 	<string name="SLurlLabelTeleport">Teleport to</string>