From b169ee65f3567db24003b19b1340e4e3afce672b Mon Sep 17 00:00:00 2001 From: Daniel Herman Date: Mon, 11 Aug 2014 15:41:29 -0400 Subject: [PATCH 1/2] Core: Prevent potential memory leaks in :data() pseudo selector Prevent potential memory leaks in the :data() pseudo selector by first checking if an element has data in the jQuery cache before actually inspecting the data itself so that the data object isn't inappropriately created. --- ui/core.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/core.js b/ui/core.js index aa1ee0f3dbb..a90df48dacf 100644 --- a/ui/core.js +++ b/ui/core.js @@ -116,12 +116,12 @@ $.extend( $.expr[ ":" ], { data: $.expr.createPseudo ? $.expr.createPseudo(function( dataName ) { return function( elem ) { - return !!$.data( elem, dataName ); + return $.hasData( elem ) && !!$.data( elem, dataName ); }; }) : // support: jQuery <1.8 function( elem, i, match ) { - return !!$.data( elem, match[ 3 ] ); + return $.hasData( elem ) && !!$.data( elem, match[ 3 ] ); }, focusable: function( element ) { From 73052f1c2f4cc031f39f4a0ce4ef4dcdeb2e9418 Mon Sep 17 00:00:00 2001 From: Daniel Herman Date: Mon, 11 Aug 2014 15:43:19 -0400 Subject: [PATCH 2/2] Widget: Prevent potential memory leaks in the widget pseudo selectors Prevent potential memory leaks in the widget pseudo selectors by first checking if an element has data in the jQuery cache before actually inspecting the data itself so that the data object isn't inappropriately created. --- ui/widget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/widget.js b/ui/widget.js index edeb7fa6fdd..49d52fe6e4c 100644 --- a/ui/widget.js +++ b/ui/widget.js @@ -59,7 +59,7 @@ $.widget = function( name, base, prototype ) { // create selector for plugin $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { - return !!$.data( elem, fullName ); + return $.hasData( elem ) && !!$.data( elem, fullName ); }; $[ namespace ] = $[ namespace ] || {};