diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-11-29 19:20:40 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-11-29 19:20:40 -0800 |
commit | 59e79633f56eaaa5696486639c0435e5828f5d9b (patch) | |
tree | a2f5e4f3481ca5a65f547797d4f6962c9aeef64b /src | |
parent | 1f6c71944937ddfa8b63b95b69f02b27a0e59192 (diff) |
fix memmove return value
Diffstat (limited to 'src')
-rw-r--r-- | src/library.js | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/library.js b/src/library.js index dc2ef192..c7187054 100644 --- a/src/library.js +++ b/src/library.js @@ -3536,13 +3536,15 @@ LibraryManager.library = { llvm_memcpy_p0i8_p0i8_i32: 'memcpy', llvm_memcpy_p0i8_p0i8_i64: 'memcpy', - memmove__sig: 'viii', + memmove__sig: 'iiii', memmove__asm: true, memmove__deps: ['memcpy'], memmove: function(dest, src, num) { dest = dest|0; src = src|0; num = num|0; + var ret = 0; if (((src|0) < (dest|0)) & ((dest|0) < ((src + num)|0))) { // Unlikely case: Copy backwards in a safe manner + ret = dest; src = (src + num)|0; dest = (dest + num)|0; while ((num|0) > 0) { @@ -3551,9 +3553,11 @@ LibraryManager.library = { num = (num - 1)|0; {{{ makeSetValueAsm('dest', 0, makeGetValueAsm('src', 0, 'i8'), 'i8') }}}; } + dest = ret; } else { _memcpy(dest, src, num) | 0; } + return dest | 0; }, llvm_memmove_i32: 'memmove', llvm_memmove_i64: 'memmove', |