mirror of
https://github.com/roytam1/basilisk55.git
synced 2026-05-26 14:58:59 +00:00
ported from UXP: Issue #2858 - Hack around the circular calls to nsPrincipal::Write() (99c31714)
This commit is contained in:
+10
-5
@@ -471,11 +471,16 @@ nsPrincipal::Write(nsIObjectOutputStream* aStream)
|
||||
rv = aStream->WriteStringZ(suffix.get());
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCSPContext* testcsp = static_cast<nsCSPContext*>(mCSP.get());
|
||||
if(testcsp) {
|
||||
int csprefcnt = testcsp->AddRef();
|
||||
testcsp->Release();
|
||||
if(csprefcnt > 10) return NS_OK;
|
||||
// This is an ugly hack to prevent re-entrancy calls into nsPrincipal::Write()
|
||||
// because of repeat CSP processing.
|
||||
// We refcount the context and if found 10+ refcounts on the same, skip writing
|
||||
// the mCSP compound object.
|
||||
// TODO: figure out exactly why this happens and fix the root cause.
|
||||
nsCSPContext* CSPContext = static_cast<nsCSPContext*>(mCSP.get());
|
||||
if(CSPContext) {
|
||||
int8_t CSPDepth = CSPContext->AddRef();
|
||||
CSPContext->Release();
|
||||
if(CSPDepth > 10) return NS_OK;
|
||||
}
|
||||
|
||||
rv = NS_WriteOptionalCompoundObject(aStream, mCSP,
|
||||
|
||||
Reference in New Issue
Block a user