diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/library.js | 20 | ||||
-rw-r--r-- | src/preamble.js | 9 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/library.js b/src/library.js index adf21a8c..6ef065e0 100644 --- a/src/library.js +++ b/src/library.js @@ -2701,6 +2701,11 @@ LibraryManager.library = { } try { var slab = {{{ makeGetSlabs('buf', 'i8', true) }}}; +#if SAFE_HEAP +#if USE_TYPED_ARRAYS == 0 + SAFE_HEAP_FILL_HISTORY(buf, buf+nbyte, 'i8'); // VFS does not use makeSetValues, so we need to do it manually +#endif +#endif return VFS.read(stream, slab, buf, nbyte, offset); } catch (e) { FS.handleFSError(e); @@ -2723,6 +2728,11 @@ LibraryManager.library = { try { var slab = {{{ makeGetSlabs('buf', 'i8', true) }}}; +#if SAFE_HEAP +#if USE_TYPED_ARRAYS == 0 + SAFE_HEAP_FILL_HISTORY(buf, buf+nbyte, 'i8'); // VFS does not use makeSetValues, so we need to do it manually +#endif +#endif return VFS.read(stream, slab, buf, nbyte); } catch (e) { FS.handleFSError(e); @@ -2824,6 +2834,11 @@ LibraryManager.library = { } try { var slab = {{{ makeGetSlabs('buf', 'i8', true) }}}; +#if SAFE_HEAP +#if USE_TYPED_ARRAYS == 0 + SAFE_HEAP_FILL_HISTORY(buf, buf+nbyte, 'i8'); // VFS does not use makeSetValues, so we need to do it manually +#endif +#endif return VFS.write(stream, slab, buf, nbyte, offset); } catch (e) { FS.handleFSError(e); @@ -2846,6 +2861,11 @@ LibraryManager.library = { try { var slab = {{{ makeGetSlabs('buf', 'i8', true) }}}; +#if SAFE_HEAP +#if USE_TYPED_ARRAYS == 0 + SAFE_HEAP_FILL_HISTORY(buf, buf+nbyte, 'i8'); // VFS does not use makeSetValues, so we need to do it manually +#endif +#endif return VFS.write(stream, slab, buf, nbyte); } catch (e) { FS.handleFSError(e); diff --git a/src/preamble.js b/src/preamble.js index 2955c885..585db832 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -156,6 +156,15 @@ function SAFE_HEAP_COPY_HISTORY(dest, src) { SAFE_HEAP_ACCESS(dest, HEAP_HISTORY[dest] || null, true, false); } +function SAFE_HEAP_FILL_HISTORY(from, to, type) { +#if SAFE_HEAP_LOG + Module.print('SAFE_HEAP fill: ' + [from, to, type]); +#endif + for (var i = from; i < to; i++) { + HEAP_HISTORY[i] = type; + } +} + //========================================== #endif |