diff -r 000000000000 -r 6474c204b198 js/src/tests/ecma_3/FunExpr/regress-545980.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/src/tests/ecma_3/FunExpr/regress-545980.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,41 @@ +/* + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/licenses/publicdomain/ + */ + +var BUGNUMBER = 518103; +var summary = 'partial flat closures must not reach across funargs'; +var actual = "no crash"; +var expect = actual; + +function Timer(){} +Timer.prototype = { initWithCallback: function (o) {Timer.q.push(o)} }; +Timer.q = []; + +var later; +var ac = {startSearch: function(q,s,n,o){later=o}}; + +var bm = {insertBookmark: function(){}, getIdForItemAt: function(){}}; + +function run_test() { + var tagIds = []; + + (function doSearch(query) { + ac.startSearch(query, "", null, { + onSearchResult: function() { + var num = tagIds.length; + + var timer = new Timer; + var next = query.slice(1); + timer.initWithCallback({ notify: function() doSearch(next) }); + } + }); + })("title"); +} + +run_test(); +later.onSearchResult(); +for (var i in Timer.q) + Timer.q[i].notify(); + +reportCompare(expect, actual, summary);