On Sat, Mar 22, 2008 at 1:42 PM, Garrett Smith <[EMAIL PROTECTED]> wrote: > Array generic methods will be safer if they check their args and throw > an error - InvalidArgumentError, TypeError, UnlikeError - (whatever). > > Invalid: (this will crash Firefox with endless loop):- > Array.forEach( { length : -1, "0": 12 }, iter );
Well, really a loop to 0xffffffff, just as the ES3 generics will do. Many ES3 Array.prototype methods explicitly specified to be generic (see the NOTEs for join, concat, pop, push, reverse, shift, slice, unshift, sort, splice in 15.4.4.*) and I don't see why forEach would be different; that generic nature is very useful when operating on DOM NodeLists, ES3 argument objects, and so forth. o = {length:-1, reverse:[].reverse, forEach:[].forEach}; o.reverse() o.forEach(function () { }) Array.forEach(o, function() { }) In my FF3 nightly all of those are handled the same way: slow script dialog after a few seconds. Fx2 doesn't have the same mechanism bounding "internal" loops, but that's just a bug, and eliminating script-DoS on the web is pretty Sisyphean. Mike _______________________________________________ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss