Fix assert when uninstalling an add-on whose data dir was deleted. (This case used to make the add-on not uninstallable)

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@11240 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
stephenjust
2012-05-15 01:31:38 +00:00
parent 9cc6593a4c
commit e5c33f58ff

View File

@@ -456,15 +456,22 @@ bool AddonsManager::uninstall(const Addon &addon)
m_addons_list.getData()[index].setInstalled(false);
//remove the addons directory
bool error = !file_manager->removeDirectory(addon.getDataDir());
if(addon.getType()=="kart")
{
kart_properties_manager->removeKart(addon.getId());
}
else if(addon.getType()=="track" || addon.getType()=="arena")
{
track_manager->removeTrack(addon.getId());
}
bool error = false;
// if the user deleted the data directory for an add-on with
// filesystem tools, removeTrack/removeKart will trigger an assert
// because the kart/track was never added in the first place
if (file_manager->fileExists(addon.getDataDir()))
{
error = !file_manager->removeDirectory(addon.getDataDir());
if(addon.getType()=="kart")
{
kart_properties_manager->removeKart(addon.getId());
}
else if(addon.getType()=="track" || addon.getType()=="arena")
{
track_manager->removeTrack(addon.getId());
}
}
saveInstalled();
return !error;
} // uninstall