<html>

<head>
<script>
function test() {
    if(window.testRunner)
        testRunner.dumpAsText();
        
    var textnode1 = document.getElementById("node").firstChild;
    var textnode2 = textnode1.splitText(3);
    textnode2.nodeValue = "";
    
    var root = document.body;
    var it = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, NodeFilter.FILTER_ACCEPT, false);

    var n = it.nextNode();
    while(n) {
        n = it.nextNode();
    }
    
    var text = document.getElementById("node").innerText;
}
</script>
</head>

<body onload="test();">
<p>If a zero lengthed render object (such as a text node that has been set to "") occured at the end of a line, it was previously given a non-zero sized run.</p>
<p>A crash would occur on iteration over a node containing such a run.  NodeIterators, the innerText property, and hovering over a link all use iteration.</p>
<p>This tests iteration using both the innerText property and NodeIterators.  It is successful if it doesn't crash Safari.</p>
<hr>
<a href="#" id="node">hello</a></body></html>