diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index d7b2033e960..107e5c68c11 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -8786,6 +8786,25 @@ nsDocShell::GetRootScrollableView(nsIScrollableView ** aOutScrollView) return NS_OK; } +#ifdef DEBUG +class nsDebugAutoBoolTrueSetter +{ +public: + nsDebugAutoBoolTrueSetter(PRBool *aBool) + : mBool(aBool) + { + *mBool = PR_TRUE; + } + + ~nsDebugAutoBoolTrueSetter() + { + *mBool = PR_FALSE; + } +protected: + PRBool *mBool; +}; +#endif + NS_IMETHODIMP nsDocShell::EnsureScriptEnvironment() { @@ -8803,7 +8822,7 @@ nsDocShell::EnsureScriptEnvironment() // Yeah, this isn't re-entrant safe, but that's ok since if we // re-enter this method, we'll infinitely loop... - mInEnsureScriptEnv = PR_TRUE; + nsDebugAutoBoolTrueSetter boolSetter(&mInEnsureScriptEnv); #endif nsCOMPtr factory = @@ -8837,10 +8856,6 @@ nsDocShell::EnsureScriptEnvironment() rv = mScriptGlobal->EnsureScriptEnvironment(nsIProgrammingLanguage::JAVASCRIPT); NS_ENSURE_SUCCESS(rv, rv); -#ifdef DEBUG - mInEnsureScriptEnv = PR_FALSE; -#endif - return NS_OK; }