FIRE-9506 crashfix: linked_item is null in case of temporary attachments. Also rlvPredCanRemoveItem will return false, so you wouldn't be able to detach it if RLVa is enabled.

Ansariel 2013-03-26 00:29:38 +01:00
parent 9636c78195
commit 4c878b49e0
1 changed files with 8 additions and 9 deletions

View File

@ -3910,13 +3910,14 @@ void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove)
for (uuid_vec_t::const_iterator it = ids_to_remove.begin(); it != ids_to_remove.end(); ++it)
{
const LLInventoryItem* linked_item = gInventory.getLinkedItem(*it);
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(linked_item)) )
if (linked_item && (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(linked_item)) )
{
continue;
}
fUpdateAppearance = true;
removeCOFItemLinks(linked_item->getUUID());
const LLUUID& linked_item_id = gInventory.getLinkedItemID(*it);
removeCOFItemLinks(linked_item_id);
}
if (fUpdateAppearance)
@ -3937,17 +3938,15 @@ void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)
{
// [RLVa:KB] - Checked: 2013-02-12 (RLVa-1.4.8)
const LLInventoryItem* linked_item = gInventory.getLinkedItem(id_to_remove);
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(linked_item)) )
if (linked_item && (rlv_handler_t::isEnabled()) && (!rlvPredCanRemoveItem(linked_item)) )
{
return;
}
removeCOFItemLinks(linked_item->getUUID());
updateAppearanceFromCOF();
// [/RLVA:KB]
// LLUUID linked_item_id = gInventory.getLinkedItemID(id_to_remove);
// removeCOFItemLinks(linked_item_id);
// updateAppearanceFromCOF();
LLUUID linked_item_id = gInventory.getLinkedItemID(id_to_remove);
removeCOFItemLinks(linked_item_id);
updateAppearanceFromCOF();
}
bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body)