From 9ff3edeea6ada16e87658ed4a0e6e585c8a7623c Mon Sep 17 00:00:00 2001 From: "bzbarsky%mit.edu" Date: Sun, 2 Apr 2006 21:10:23 +0000 Subject: [PATCH] Init the system principal singleton when we init the security manager -- no need for lazy init here. Bug 327176, r=mrbkap, sr=dveditz git-svn-id: svn://10.0.0.236/trunk@193400 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/caps/src/nsScriptSecurityManager.cpp | 24 ++++++++------------ 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/mozilla/caps/src/nsScriptSecurityManager.cpp b/mozilla/caps/src/nsScriptSecurityManager.cpp index 8d06d18ed92..92377a47080 100644 --- a/mozilla/caps/src/nsScriptSecurityManager.cpp +++ b/mozilla/caps/src/nsScriptSecurityManager.cpp @@ -1698,19 +1698,6 @@ nsScriptSecurityManager::doGetSubjectPrincipal(nsresult* rv) NS_IMETHODIMP nsScriptSecurityManager::GetSystemPrincipal(nsIPrincipal **result) { - if (!mSystemPrincipal) - { - nsRefPtr system = new nsSystemPrincipal(); - if (!system) - return NS_ERROR_OUT_OF_MEMORY; - - nsresult rv = system->Init(); - if (NS_FAILED(rv)) - return rv; - - mSystemPrincipal = system; - } - NS_ADDREF(*result = mSystemPrincipal); return NS_OK; @@ -3039,6 +3026,15 @@ nsresult nsScriptSecurityManager::Init() rv = bundleService->CreateBundle("chrome://global/locale/security/caps.properties", &sStrBundle); NS_ENSURE_SUCCESS(rv, rv); + // Create our system principal singleton + nsRefPtr system = new nsSystemPrincipal(); + NS_ENSURE_TRUE(system, NS_ERROR_OUT_OF_MEMORY); + + rv = system->Init(); + NS_ENSURE_SUCCESS(rv, rv); + + mSystemPrincipal = system; + //-- Register security check callback in the JS engine // Currently this is used to control access to function.caller nsCOMPtr runtimeService = @@ -3133,7 +3129,7 @@ nsScriptSecurityManager::SystemPrincipalSingletonConstructor() { nsIPrincipal *sysprin = nsnull; if (gScriptSecMan) - gScriptSecMan->GetSystemPrincipal(&sysprin); + sysprin = gScriptSecMan->mSystemPrincipal; return NS_STATIC_CAST(nsSystemPrincipal*, sysprin); }