diff options
| author | ispedals <ispedals@users.noreply.github.com> | 2016-06-18 18:33:51 -0400 | 
|---|---|---|
| committer | ispedals <ispedals@users.noreply.github.com> | 2016-06-19 12:54:22 -0400 | 
| commit | 5e0ac4e8ea32c3e33de38db02d7dcbebfdd05cda (patch) | |
| tree | 3cc8d605c1d21e7998744506ce88bcf043797b65 | |
| parent | b4fe1f1fa6064162adfa7b6eee5f397f190ae8bf (diff) | |
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.
| -rw-r--r-- | ext/bg/js/translator.js | 9 | 
1 files changed, 9 insertions, 0 deletions
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));  |