Bug 581589 - TM: add defaultCompartment to compartments array (r=gal)

This commit is contained in:
Gregor Wagner 2010-08-05 15:48:34 -07:00
parent 8bb1230898
commit e265b8c778
2 changed files with 10 additions and 3 deletions

View File

@ -568,7 +568,8 @@ JSRuntime::init(uint32 maxbytes)
#endif
if (!(defaultCompartment = new JSCompartment(this)) ||
!defaultCompartment->init()) {
!defaultCompartment->init() ||
!compartments.append(defaultCompartment)) {
return false;
}
@ -657,8 +658,10 @@ JSRuntime::~JSRuntime()
JS_DESTROY_LOCK(debuggerLock);
#endif
propertyTree.finish();
if (defaultCompartment)
delete defaultCompartment;
/* Delete all remaining Compartments. Ideally only the defaultCompartment should be left. */
for (JSCompartment **c = compartments.begin(); c != compartments.end(); ++c)
delete *c;
compartments.clear();
}
JS_PUBLIC_API(JSRuntime *)

View File

@ -2965,6 +2965,10 @@ SweepCompartments(JSContext *cx)
JSCompartment **read = rt->compartments.begin();
JSCompartment **end = rt->compartments.end();
JSCompartment **write = read;
/* Delete defaultCompartment only during runtime shutdown */
rt->defaultCompartment->marked = true;
while (read < end) {
JSCompartment *compartment = (*read++);
if (compartment->marked) {