@@ -31,7 +31,7 @@ var {FilterNotifier} = require("filterNotifier");
3131 * Lookup table, filters by their associated key
3232 * @type Object
3333 */
34- var filterByKey = [ ] ;
34+ var filterByKey = Object . create ( null ) ;
3535
3636/**
3737 * Lookup table, keys of the filters by filter text
@@ -47,7 +47,7 @@ var keyByFilter = Object.create(null);
4747var usingGetSelectorsForDomain = ! ( "nsIStyleSheetService" in Ci ) ;
4848
4949/**
50- * Nested lookup table, filter (or false if inactive) by filter text by domain.
50+ * Nested lookup table, filter (or false if inactive) by filter key by domain.
5151 * (Only contains filters that aren't unconditionally matched for all domains.)
5252 * @type Object
5353 */
@@ -125,7 +125,7 @@ var ElemHide = exports.ElemHide =
125125 */
126126 clear : function ( )
127127 {
128- filterByKey = [ ] ;
128+ filterByKey = Object . create ( null ) ;
129129 keyByFilter = Object . create ( null ) ;
130130 filtersByDomain = Object . create ( null ) ;
131131 filtersBySelector = Object . create ( null ) ;
@@ -192,7 +192,12 @@ var ElemHide = exports.ElemHide =
192192 if ( filter . text in keyByFilter )
193193 return ;
194194
195- let key = filterByKey . push ( filter ) - 1 ;
195+ let key ;
196+ do {
197+ key = Math . random ( ) * 0x0FFFFFFF | 0 ;
198+ } while ( key in filterByKey ) ;
199+
200+ filterByKey [ key ] = filter ;
196201 keyByFilter [ filter . text ] = key ;
197202
198203 if ( usingGetSelectorsForDomain )
@@ -482,7 +487,7 @@ var ElemHide = exports.ElemHide =
482487
483488 let selectors = [ ] ;
484489
485- let seenFilters = Object . create ( null ) ;
490+ let seenFilters = new Set ( ) ;
486491 let currentDomain = domain ? domain . toUpperCase ( ) : "" ;
487492 while ( true )
488493 {
@@ -494,9 +499,9 @@ var ElemHide = exports.ElemHide =
494499 {
495500 for ( let filterKey in filters )
496501 {
497- if ( filterKey in seenFilters )
502+ if ( seenFilters . has ( filterKey ) )
498503 continue ;
499- seenFilters [ filterKey ] = true ;
504+ seenFilters . add ( filterKey ) ;
500505
501506 let filter = filters [ filterKey ] ;
502507 if ( filter && ! this . getException ( filter , domain ) )
0 commit comments