<html>
    <head>
        <script>
            function test()
            {
                if (window.testRunner) {
                    testRunner.dumpAsText();
                    testRunner.waitUntilDone();
                }
                
                window.crash = "crash";
                delete window.crash;
                    
                if (window.navigationController)
                    navigationController.evalAfterBackForwardNavigation("continueTestAfterNavigation()");
            }
            
            function continueTestAfterNavigation()
            {
                print("PASS: You didn't crash");
                
                if (window.testRunner)
                    testRunner.notifyDone();
            }

            function print(message) {
                var paragraph = document.createElement("p");
                paragraph.appendChild(document.createTextNode(message));
                document.getElementById("console").appendChild(paragraph);
            }
        </script>
    </head>

    <body onload="test()">
        <p>Bug: rdar://problem/4465598 REGRESSION (TOT): Crash occurs at http://maps.google.com/?output=html ( KJS::Identifier::add(KJS::UString::Rep*)</p> 
        <p>This cause for this bug was that the code to save the window object's property map tried to use
        the deleted property sentinel key as a normal pointer.</p>
        <p>To run this test in Safari:</p>
        <ol>
            <li><a href="resources/go-back.html">Click here to do a back/forward navigation.</a></li>
            <li>You should not crash.</li>
        </ol>
        <p>When the automated version of this test passes, you'll see a PASS message below.
        (The automated version is currently disabled because DumpRenderTree doesn't work
        with the back/forward cache enabled.)</p>
        <hr>
        <div id="console"></div>
    </body>
</html>
