diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 3680e20f15476550ec88c6e9a626e9cbc4b7fe54..8ceb411ede76dcb8c44abf82a7db959ee524a46a 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -510,7 +510,12 @@ void LLFloater::destroy() // virtual LLFloater::~LLFloater() { - LLFloaterReg::removeInstance(mInstanceName, mKey); + if (!isDead()) + { + // If it's dead, instance is supposed to be already removed, and + // in case of single instance we can remove new one by accident + LLFloaterReg::removeInstance(mInstanceName, mKey); + } if( gFocusMgr.childHasKeyboardFocus(this)) { diff --git a/indra/newview/llurlfloaterdispatchhandler.cpp b/indra/newview/llurlfloaterdispatchhandler.cpp index ec2e423c64a1a1cdcd67883946ce800aae9ffc13..0343485864030643c5b2832bff7bd8f9e69dcb81 100644 --- a/indra/newview/llurlfloaterdispatchhandler.cpp +++ b/indra/newview/llurlfloaterdispatchhandler.cpp @@ -54,6 +54,7 @@ const std::string FLOATER_GUIDEBOOK("guidebook"); // alias for how_to const std::string FLOATER_HOW_TO("how_to"); const std::string FLOATER_WEB_CONTENT("web_content"); +// All arguments are palceholders! Server side will need to add validation first. // Web content universal argument const std::string KEY_TRUSTED_CONTENT("trusted_content"); @@ -105,6 +106,8 @@ bool LLUrlFloaterDispatchHandler::operator()(const LLDispatcher *, const std::st } } + // At the moment command_params is a placeholder and code treats it as map + // Once server side adds argument validation this will be either a map or an array std::string floater; LLSD command_params; std::string url;