SL-11321 Do not crash floater if capability is missing

meow-7.2.2
andreykproductengine 2019-05-30 18:45:02 +03:00
parent c338d337e7
commit 0c84313a00
2 changed files with 22 additions and 7 deletions

View File

@ -41,6 +41,7 @@ const S32 SIZE_OF_ONE_KB = 1024;
LLFloaterMyScripts::LLFloaterMyScripts(const LLSD& seed)
: LLFloater(seed),
mGotAttachmentMemoryUsed(false),
mAttachmentDetailsRequested(false),
mAttachmentMemoryMax(0),
mAttachmentMemoryUsed(0),
mGotAttachmentURLsUsed(false),
@ -55,12 +56,24 @@ BOOL LLFloaterMyScripts::postBuild()
std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
getChild<LLUICtrl>("loading_text")->setValue(LLSD(msg_waiting));
return requestAttachmentDetails();
mAttachmentDetailsRequested = requestAttachmentDetails();
return TRUE;
}
BOOL LLFloaterMyScripts::requestAttachmentDetails()
// virtual
void LLFloaterMyScripts::onOpen(const LLSD& key)
{
if (!gAgent.getRegion()) return FALSE;
if (!mAttachmentDetailsRequested)
{
mAttachmentDetailsRequested = requestAttachmentDetails();
}
LLFloater::onOpen(key);
}
bool LLFloaterMyScripts::requestAttachmentDetails()
{
if (!gAgent.getRegion()) return false;
LLSD body;
std::string url = gAgent.getRegion()->getCapability("AttachmentResources");
@ -68,11 +81,11 @@ BOOL LLFloaterMyScripts::requestAttachmentDetails()
{
LLCoros::instance().launch("LLFloaterMyScripts::getAttachmentLimitsCoro",
boost::bind(&LLFloaterMyScripts::getAttachmentLimitsCoro, this, url));
return TRUE;
return true;
}
else
{
return FALSE;
return false;
}
}
@ -284,7 +297,7 @@ void LLFloaterMyScripts::onClickRefresh(void* userdata)
btn->setEnabled(false);
}
instance->clearList();
instance->requestAttachmentDetails();
instance->mAttachmentDetailsRequested = instance->requestAttachmentDetails();
}
else
{

View File

@ -36,15 +36,17 @@ public:
LLFloaterMyScripts(const LLSD& seed);
BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
void setAttachmentDetails(LLSD content);
void setAttachmentSummary(LLSD content);
BOOL requestAttachmentDetails();
bool requestAttachmentDetails();
void clearList();
private:
void getAttachmentLimitsCoro(std::string url);
bool mGotAttachmentMemoryUsed;
bool mAttachmentDetailsRequested;
S32 mAttachmentMemoryMax;
S32 mAttachmentMemoryUsed;