diff options
author | daurnimator <quae@daurnimator.com> | 2018-01-07 02:07:17 +1100 |
---|---|---|
committer | daurnimator <quae@daurnimator.com> | 2018-01-07 02:07:17 +1100 |
commit | 6ffe07fc5d16ee9acdcd6651d433ce13b193cd15 (patch) | |
tree | 11b7d6ff7e64b5b52bb0e68eb14224cfc092e7da /src/lstring.js | |
parent | a80d704ceb4e7d85dc54a9c3706d6ffa7bf2412f (diff) | |
download | fengari-6ffe07fc5d16ee9acdcd6651d433ce13b193cd15.tar.gz fengari-6ffe07fc5d16ee9acdcd6651d433ce13b193cd15.tar.bz2 fengari-6ffe07fc5d16ee9acdcd6651d433ce13b193cd15.zip |
TypedArray.toString() doesn't return a unique string in some browsers
e.g. IE11
Instead iterate over string contents and manually build hash.
I have *not* tested this for performance.
An alternative option is to use Array.prototype.join.call
Diffstat (limited to 'src/lstring.js')
-rw-r--r-- | src/lstring.js | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lstring.js b/src/lstring.js index 84754f0..d65fc6a 100644 --- a/src/lstring.js +++ b/src/lstring.js @@ -31,7 +31,11 @@ const luaS_eqlngstr = function(a, b) { make sure this doesn't conflict with any of the anti-collision strategies in ltable */ const luaS_hash = function(str) { assert(defs.is_luastring(str)); - return '|'+str.toString(); + let len = str.length; + let s = "|"; + for (let i=0; i<len; i++) + s += str[i].toString(16); + return s; }; const luaS_hashlongstr = function(ts) { |