Reviewed by Trey.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 11 Aug 2004 06:26:32 +0000 (06:26 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 11 Aug 2004 06:26:32 +0000 (06:26 +0000)
commit002d0394103be2f0c51dca8cb1ba5d8116df7071
tree3052e9cf46448ada65b1b6b24eca2e5dac3ea840
parentddeb4bb511e4f3ddc65b328265a5b8a60d6c4bd7
    Reviewed by Trey.

        - fixed <rdar://problem/3710123> Loading iframe that replaces content in the parent document crashes Safari

        I fixed three problems:

            1) script interpreter destroyed while it was interpreting scripts, caused random havoc
            2) code trying to get to view after view was detached from part, caused nil-deref
            3) signals sent to parent after child was no longer in the parent's frames list, caused nil-deref

        Now the test page works fine. Hope the real sites do too.

        * khtml/khtml_part.h: Add connectChild and disconnectChild helper functions (private).
        * khtml/khtml_part.cpp:
        (KHTMLPart::clear): Call disconnectChild on each frame as we detach it (see below).
        (KHTMLPart::end): Ref the part at the start, and deref the part at the end, of this function.
        Otherwise, we can end up destroying the part, and hence the interpreter, inside a script that
        the interpreter itself is running.
        (KHTMLPart::slotFinishedParsing): Add another check for a nil m_view, after the call to
        checkCompleted.
        (KHTMLPart::checkCompleted): Remove bogus if statement with empty body.
        (KHTMLPart::processObjectRequest): Call disconnectChild to disconnect the child <-> parent signals of the
        old child that the new one is replacing, and connectChild to connect the signals (nicer factoring).
        (KHTMLPart::slotChildCompleted): Fixed up a confusing boolean if/expression to be simpler. Not related to
        the bug fix, but an earlier version of the fix had changes in this function.
        (KHTMLPart::connectChild): Added. Connects the appropriate signals for a child frame.
        (KHTMLPart::disconnectChild): Added. Disconnects the same signals that connectChild connects.

        * kwq/KWQKHTMLPart.mm: (KHTMLPart::frameDetached): Added a call to disconnectChild before removing the
        child from the frames list.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7228 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebCore/ChangeLog-2005-08-23
WebCore/khtml/khtml_part.cpp
WebCore/khtml/khtml_part.h
WebCore/kwq/KWQKHTMLPart.mm