mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Bug 1633468 - Make dom/bindings/Codegen.py compare against JSID_VOID to detect uninitialized jsid members r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D72701
This commit is contained in:
parent
cb0dd617cf
commit
4452987eb3
@ -14059,7 +14059,7 @@ def initIdsClassMethod(identifiers, atomCacheName):
|
|||||||
idinit.reverse()
|
idinit.reverse()
|
||||||
body = fill(
|
body = fill(
|
||||||
"""
|
"""
|
||||||
MOZ_ASSERT(!*reinterpret_cast<jsid**>(atomsCache));
|
MOZ_ASSERT(JSID_IS_VOID(*reinterpret_cast<jsid*>(atomsCache)));
|
||||||
|
|
||||||
// Initialize these in reverse order so that any failure leaves the first one
|
// Initialize these in reverse order so that any failure leaves the first one
|
||||||
// uninitialized.
|
// uninitialized.
|
||||||
@ -14149,7 +14149,8 @@ class CGDictionary(CGThing):
|
|||||||
${dictName}Atoms* atomsCache = nullptr;
|
${dictName}Atoms* atomsCache = nullptr;
|
||||||
if (cx) {
|
if (cx) {
|
||||||
atomsCache = GetAtomCache<${dictName}Atoms>(cx);
|
atomsCache = GetAtomCache<${dictName}Atoms>(cx);
|
||||||
if (!*reinterpret_cast<jsid**>(atomsCache) && !InitIds(cx, atomsCache)) {
|
if (JSID_IS_VOID(*reinterpret_cast<jsid*>(atomsCache)) &&
|
||||||
|
!InitIds(cx, atomsCache)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -14332,7 +14333,8 @@ class CGDictionary(CGThing):
|
|||||||
body += fill(
|
body += fill(
|
||||||
"""
|
"""
|
||||||
${dictName}Atoms* atomsCache = GetAtomCache<${dictName}Atoms>(cx);
|
${dictName}Atoms* atomsCache = GetAtomCache<${dictName}Atoms>(cx);
|
||||||
if (!*reinterpret_cast<jsid**>(atomsCache) && !InitIds(cx, atomsCache)) {
|
if (JSID_IS_VOID(*reinterpret_cast<jsid*>(atomsCache)) &&
|
||||||
|
!InitIds(cx, atomsCache)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17712,7 +17714,8 @@ class CallbackOperationBase(CallbackMethod):
|
|||||||
getCallableFromProp = fill(
|
getCallableFromProp = fill(
|
||||||
"""
|
"""
|
||||||
${atomCacheName}* atomsCache = GetAtomCache<${atomCacheName}>(cx);
|
${atomCacheName}* atomsCache = GetAtomCache<${atomCacheName}>(cx);
|
||||||
if ((!*reinterpret_cast<jsid**>(atomsCache) && !InitIds(cx, atomsCache)) ||
|
if ((JSID_IS_VOID(*reinterpret_cast<jsid*>(atomsCache)) &&
|
||||||
|
!InitIds(cx, atomsCache)) ||
|
||||||
!GetCallableProperty(cx, atomsCache->${methodAtomName}, &callable)) {
|
!GetCallableProperty(cx, atomsCache->${methodAtomName}, &callable)) {
|
||||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||||
return${errorReturn};
|
return${errorReturn};
|
||||||
@ -17794,7 +17797,8 @@ class CallbackGetter(CallbackAccessor):
|
|||||||
"""
|
"""
|
||||||
JS::Rooted<JSObject *> callback(cx, mCallback);
|
JS::Rooted<JSObject *> callback(cx, mCallback);
|
||||||
${atomCacheName}* atomsCache = GetAtomCache<${atomCacheName}>(cx);
|
${atomCacheName}* atomsCache = GetAtomCache<${atomCacheName}>(cx);
|
||||||
if ((!*reinterpret_cast<jsid**>(atomsCache) && !InitIds(cx, atomsCache)) ||
|
if ((JSID_IS_VOID(*reinterpret_cast<jsid*>(atomsCache))
|
||||||
|
&& !InitIds(cx, atomsCache)) ||
|
||||||
!JS_GetPropertyById(cx, callback, atomsCache->${attrAtomName}, &rval)) {
|
!JS_GetPropertyById(cx, callback, atomsCache->${attrAtomName}, &rval)) {
|
||||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||||
return${errorReturn};
|
return${errorReturn};
|
||||||
@ -17822,7 +17826,8 @@ class CallbackSetter(CallbackAccessor):
|
|||||||
"""
|
"""
|
||||||
MOZ_ASSERT(argv.length() == 1);
|
MOZ_ASSERT(argv.length() == 1);
|
||||||
${atomCacheName}* atomsCache = GetAtomCache<${atomCacheName}>(cx);
|
${atomCacheName}* atomsCache = GetAtomCache<${atomCacheName}>(cx);
|
||||||
if ((!*reinterpret_cast<jsid**>(atomsCache) && !InitIds(cx, atomsCache)) ||
|
if ((JSID_IS_VOID(*reinterpret_cast<jsid*>(atomsCache)) &&
|
||||||
|
!InitIds(cx, atomsCache)) ||
|
||||||
!JS_SetPropertyById(cx, CallbackKnownNotGray(), atomsCache->${attrAtomName}, argv[0])) {
|
!JS_SetPropertyById(cx, CallbackKnownNotGray(), atomsCache->${attrAtomName}, argv[0])) {
|
||||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||||
return${errorReturn};
|
return${errorReturn};
|
||||||
|
@ -62,10 +62,6 @@ CycleCollectedJSContext::CycleCollectedJSContext()
|
|||||||
mMicroTaskRecursionDepth(0) {
|
mMicroTaskRecursionDepth(0) {
|
||||||
MOZ_COUNT_CTOR(CycleCollectedJSContext);
|
MOZ_COUNT_CTOR(CycleCollectedJSContext);
|
||||||
|
|
||||||
// Reinitialize PerThreadAtomCache because dom/bindings/Codegen.py compares
|
|
||||||
// against zero rather than JSID_VOID to detect uninitialized jsid members.
|
|
||||||
memset(static_cast<PerThreadAtomCache*>(this), 0, sizeof(PerThreadAtomCache));
|
|
||||||
|
|
||||||
nsCOMPtr<nsIThread> thread = do_GetCurrentThread();
|
nsCOMPtr<nsIThread> thread = do_GetCurrentThread();
|
||||||
mOwningThread = thread.forget().downcast<nsThread>().take();
|
mOwningThread = thread.forget().downcast<nsThread>().take();
|
||||||
MOZ_RELEASE_ASSERT(mOwningThread);
|
MOZ_RELEASE_ASSERT(mOwningThread);
|
||||||
|
Loading…
Reference in New Issue
Block a user