From: carpie Date: Wed, 19 Jan 2011 23:37:31 +0000 (-0600) Subject: Skip id regex check when large html strings are passed to the jQuery constructor... X-Git-Tag: 1.6b1~54 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e0856738e6151368cffc963800e06ebcc0bbc314;p=jquery.git Skip id regex check when large html strings are passed to the jQuery constructor (#7990). --- diff --git a/src/core.js b/src/core.js index f19de96d0..a893fc9b3 100644 --- a/src/core.js +++ b/src/core.js @@ -96,7 +96,12 @@ jQuery.fn = jQuery.prototype = { // Handle HTML strings if ( typeof selector === "string" ) { // Are we dealing with HTML string or an ID? - match = quickExpr.exec( selector ); + if ( selector.length > 1024 ) { + // Assume very large strings are HTML and skip the regex check + match = [ null, selector, null ]; + } else { + match = quickExpr.exec( selector ); + } // Verify a match, and that no context was specified for #id if ( match && (match[1] || !context) ) { diff --git a/test/unit/core.js b/test/unit/core.js index a8da85fc2..03325ab77 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -469,7 +469,7 @@ test("isWindow", function() { }); test("jQuery('html')", function() { - expect(15); + expect(18); QUnit.reset(); jQuery.foo = false; @@ -501,6 +501,19 @@ test("jQuery('html')", function() { ok( jQuery("
")[0], "Create a div with closing tag." ); ok( jQuery("
")[0], "Create a table with closing tag." ); + + // Test very large html string #7990 + var i; + var li = '
  • very large html string
  • '; + var html = [''); + html = jQuery(html.join(''))[0]; + equals( html.nodeName.toUpperCase(), 'UL'); + equals( html.firstChild.nodeName.toUpperCase(), 'LI'); + equals( html.childNodes.length, 50000 ); }); test("jQuery('html', context)", function() {