Skip to content
Snippets Groups Projects
Commit d681ea89 authored by Andrew A. de Laix's avatar Andrew A. de Laix
Browse files

Get rid of intrusive_ptr member to prevent crash on shutdown.

parent 1a711b3f
No related branches found
No related tags found
No related merge requests found
......@@ -70,7 +70,6 @@ class LLUpdateChecker::Implementation:
Client & mClient;
LLHTTPClient mHttpClient;
bool mInProgress;
LLHTTPClient::ResponderPtr mMe;
std::string mVersion;
std::string buildUrl(std::string const & protocolVersion, std::string const & hostUrl,
......@@ -109,8 +108,7 @@ const char * LLUpdateChecker::Implementation::sProtocolVersion = "v1.0";
LLUpdateChecker::Implementation::Implementation(LLUpdateChecker::Client & client):
mClient(client),
mInProgress(false),
mMe(this)
mInProgress(false)
{
; // No op.
}
......@@ -118,7 +116,7 @@ LLUpdateChecker::Implementation::Implementation(LLUpdateChecker::Client & client
LLUpdateChecker::Implementation::~Implementation()
{
mMe.reset(0);
; // No op.
}
......@@ -136,9 +134,11 @@ void LLUpdateChecker::Implementation::check(std::string const & protocolVersion,
// The HTTP client will wrap a raw pointer in a boost::intrusive_ptr causing the
// passed object to be silently and automatically deleted. We pass a self-
// referential intrusive pointer stored as an attribute of this class to keep
// the client from deletig the update checker implementation instance.
mHttpClient.get(checkUrl, mMe);
// referential intrusive pointer to which we add a reference to keep the
// client from deleting the update checker implementation instance.
LLHTTPClient::ResponderPtr temporaryPtr(this);
boost::intrusive_ptr_add_ref(temporaryPtr.get());
mHttpClient.get(checkUrl, temporaryPtr);
}
void LLUpdateChecker::Implementation::completed(U32 status,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment