/*
 * 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);
