WebCore:
[WebKit.git] / WebCore / bindings / js / JSNodeCustom.cpp
index 20fdad2d4483ddfd573a040f427f7aac88440944..fc27bff6f94829c8918aca4dc097e2a707d2efa9 100644 (file)
@@ -115,6 +115,12 @@ void JSNode::mark()
     // Nodes in the document are kept alive by ScriptInterpreter::mark,
     // so we have no special responsibilities and can just call the base class here.
     if (node->inDocument()) {
+        // But if the document isn't marked we have to mark it to ensure that
+        // nodes reachable from this one are also marked
+        if (Document* doc = node->ownerDocument())
+            if (DOMObject* docWrapper = ScriptInterpreter::getDOMObject(doc))
+                if (!docWrapper->marked())
+                    docWrapper->mark();
         DOMObject::mark();
         return;
     }