From e06fda69f00082b44fd39ce8e851f72d29999011 Mon Sep 17 00:00:00 2001 From: Michał Gołębiowski Date: Sun, 29 May 2016 22:24:28 +0200 Subject: Attributes: Avoid infinite recursion on non-lowercase attribute getters Attribute hooks are determined for the lowercase versions of attribute names but this has not been reflected in the bool attribute hooks. The code that temporarily removed a handler to avoid an infinite loop was removing an incorrect handler causing stack overflow. Fixes gh-3133 Refs gh-2914 Refs gh-2916 Closes gh-3134 --- test/unit/attributes.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'test/unit') diff --git a/test/unit/attributes.js b/test/unit/attributes.js index 45efddfe4..127eb3e1e 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -1642,3 +1642,22 @@ QUnit.test( "SVG class manipulation (gh-2199)", function( assert ) { assert.ok( !elem.hasClass( "awesome" ), "SVG element (" + this + ") toggles the class off" ); } ); } ); + +QUnit.test( "non-lowercase boolean attribute getters should not crash", function( assert ) { + assert.expect( 3 ); + + var elem = jQuery( "" ); + + jQuery.each( { + checked: "Checked", + required: "requiRed", + autofocus: "AUTOFOCUS" + }, function( lowercased, original ) { + try { + assert.strictEqual( elem.attr( original ), lowercased, + "The '" + this + "' attribute getter should return the lowercased name" ); + } catch ( e ) { + assert.ok( false, "The '" + this + "' attribute getter threw" ); + } + } ); +} ); -- cgit v1.2.3