diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 37088064c6d2cb463c8996c189f7583669ccc360..8940339265a1f7009d995023289b0aae84faa6ac 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -282,7 +282,9 @@ BOOL get_is_item_removable(const LLInventoryModel* model, const LLUUID& id)
 
 BOOL get_is_category_removable(const LLInventoryModel* model, const LLUUID& id)
 {
-	// This function doesn't check the folder's children.
+	// NOTE: This function doesn't check the folder's children.
+	// See LLFolderBridge::isItemRemovable for a function that does
+	// consider the children.
 
 	if (!model)
 	{
@@ -296,17 +298,29 @@ BOOL get_is_category_removable(const LLInventoryModel* model, const LLUUID& id)
 
 	if (!isAgentAvatarValid()) return FALSE;
 
-	LLInventoryCategory* category = model->getCategory(id);
+	const LLInventoryCategory* category = model->getCategory(id);
 	if (!category)
 	{
 		return FALSE;
 	}
 
-	if (LLFolderType::lookupIsProtectedType(category->getPreferredType()))
+	const LLFolderType::EType folder_type = category->getPreferredType();
+	
+	if (LLFolderType::lookupIsProtectedType(folder_type))
 	{
 		return FALSE;
 	}
 
+	// Can't delete the outfit that is currently being worn.
+	if (folder_type == LLFolderType::FT_OUTFIT)
+	{
+		const LLViewerInventoryItem *base_outfit_link = LLAppearanceMgr::instance().getBaseOutfitLink();
+		if (base_outfit_link && (category == base_outfit_link->getLinkedCategory()))
+		{
+			return FALSE;
+		}
+	}
+
 	return TRUE;
 }