diff --git a/netwerk/cookie/nsCookieService.cpp b/netwerk/cookie/nsCookieService.cpp index 3a7c4e23c538..2587872094b9 100644 --- a/netwerk/cookie/nsCookieService.cpp +++ b/netwerk/cookie/nsCookieService.cpp @@ -644,9 +644,6 @@ nsCookieService::Init() mStorageService = do_GetService("@mozilla.org/storage/service;1", &rv); NS_ENSURE_SUCCESS(rv, rv); - rv = NS_NewNamedThread("Cookie", getter_AddRefs(mThread)); - NS_ENSURE_SUCCESS(rv, rv); - // Init our default, and possibly private DBStates. InitDBStates(); @@ -674,6 +671,7 @@ nsCookieService::InitDBStates() NS_ASSERTION(!mDefaultDBState, "already have a default DBState"); NS_ASSERTION(!mPrivateDBState, "already have a private DBState"); NS_ASSERTION(!mInitializedDBStates, "already initialized"); + NS_ASSERTION(!mThread, "already have a cookie thread"); // Create a new default DBState and set our current one. mDefaultDBState = new DBState(); @@ -695,6 +693,8 @@ nsCookieService::InitDBStates() } mDefaultDBState->cookieFile->AppendNative(NS_LITERAL_CSTRING(COOKIES_FILE)); + NS_ENSURE_SUCCESS_VOID(NS_NewNamedThread("Cookie", getter_AddRefs(mThread))); + nsCOMPtr runnable = NS_NewRunnableFunction("InitDBStates.TryInitDB", [] { NS_ENSURE_TRUE_VOID(gCookieService && gCookieService->mDBState && @@ -1703,7 +1703,10 @@ nsCookieService::CloseDBStates() return; } - EnsureReadComplete(false); + if (mThread) { + mThread->Shutdown(); + mThread = nullptr; + } // Null out our private and pointer DBStates regardless. mPrivateDBState = nullptr; @@ -1962,9 +1965,6 @@ nsCookieService::~nsCookieService() UnregisterWeakMemoryReporter(this); gCookieService = nullptr; - if (mThread) { - mThread->Shutdown(); - } } NS_IMETHODIMP