<html>
Test passes if it does not crash.
<style>
.div2 { float: none; width: 100px; }
.div2:nth-last-child(odd) { float: right; }
.span1 { float: right; height: 100px; }
.td1 { height: 100px; }
</style>
<script>
if (window.testRunner)
    testRunner.dumpAsText();

function runTest() {
span1 = document.createElement('span');
span1.setAttribute('class', 'span1');
document.documentElement.appendChild(span1);

div2 = document.createElement('div');
div2.setAttribute('class', 'div2');
document.documentElement.appendChild(div2);

document.documentElement.appendChild(document.createElement('div'));

div3 = document.createElement('div');
document.documentElement.appendChild(div3);

document.documentElement.appendChild(document.createElement('span'));
document.documentElement.appendChild(document.createElement('span'));
document.documentElement.appendChild(document.createElement('span'));

span2 = document.createElement('span');
document.documentElement.appendChild(span2);

document.documentElement.appendChild(document.createElement('div'));

document.body.offsetTop;
div1 = document.createElement('div');
td1 = document.createElement('td');
td1.appendChild(document.createTextNode('PASS'));
td1.setAttribute('class', 'td1');
div1.appendChild(td1);
div2.appendChild(div1);

document.body.offsetTop;
document.body.appendChild(div3);

document.body.offsetTop;
span2.appendChild(span1);
document.createElement("span").appendChild(span2);
}

window.onload = runTest;
</script>
</html>
