IE Leak: Array.flatten #2175

Closed
ibolmo opened this Issue Dec 19, 2011 · 0 comments

Projects

None yet

1 participant

@ibolmo
MooTools member

As per: #2127 (comment)

It appears that the calling of instanceof on 'non-objects' (mootools.js flatten()) causes the memory leaks in IE. http://ajaxian.com/archives/working-aroung-the-instanceof-memory-leak

We ended up implementing the following:

if(Browser.ie) {
        instanceOf = this.instanceOf = function(item, object) {
            if (item == null) return false;
            // Avoid calling instanceof on certain "non-objects" to prevent memory leaks in IE
            if (!item.hasOwnProperty) return false;
            var constructor = item.$constructor || item.constructor;
            while (constructor){
                if (constructor === object) return true;
                constructor = constructor.parent;
            }
            return item instanceof object;
        };
    }
@ibolmo ibolmo closed this Jan 30, 2012
@ibolmo ibolmo reopened this Jan 30, 2012
@ibolmo ibolmo referenced this issue Jan 30, 2012
Merged

Fixes #2175 #2264

@ibolmo ibolmo added a commit to ibolmo/mootools-core that referenced this issue Feb 5, 2012
@ibolmo ibolmo Fixes #2175
This adds an additional check to `instanceOf` that prevents extraneous
instanceof checks for non-objects (e.g. window) as per:
http://ajaxian.com/archives/working-aroung-the-instanceof-memory-leak

PASSES: IE6-9; FFx 3-5, 8, 10; Chrome latest; Safari 5; Opera 11
4613cae
@ibolmo ibolmo closed this in 5223508 Feb 7, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment