<html>
<head></head>
<body>
<script>
function generate_deeply_nested_selector(nest) {
    var selector = [];
    for (var i = 0; i < nest; ++i)
        selector.push('* > ');
    // We don't add last '*' to the selector so that this CSS Selector is invalid.
    selector.push(' {background:blue}');
    var style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = selector.join('');
    document.head.appendChild(style);
}

generate_deeply_nested_selector(400000);

if (window.testRunner)
    testRunner.dumpAsText();
</script>
<p>Test case for <a href="http://bugs.webkit.org/show_bug.cgi?id=41129">http://bugs.webkit.org/show_bug.cgi?id=41129</a></p>
<p>If browser didn't crash, the test passed.</p>
</body>
</html>
