From 5e0ac4e8ea32c3e33de38db02d7dcbebfdd05cda Mon Sep 17 00:00:00 2001 From: ispedals Date: Sat, 18 Jun 2016 18:33:51 -0400 Subject: [PATCH] Workaround spidermonkey bug so dictionary data loads We need to make a copy of the iteration variable in the for-of loop so that the distinct values are available in the callback. --- ext/bg/js/translator.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index bf1538e2..261196d2 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -46,8 +46,17 @@ class Translator { const pendingLoads = []; for (let key of files) { + /* + Spidermonkey does not implement lexical bindings for for-of loop + (see https://bugzilla.mozilla.org/show_bug.cgi?id=449811) + so we need to manually make a new declaration for key. + Otherwise key will always remain the same in the callback to loadData + and the dictionary data will not be set correctly + */ + let key_ = key; pendingLoads.push(key); Translator.loadData(this.paths[key], (response) => { + let key = key_ switch (key) { case 'rules': this.deinflector.setRules(JSON.parse(response));