From 706e016ef8a8c1d611002859acefbd7e3ca9cbd7 Mon Sep 17 00:00:00 2001 From: Sergey Pepyakin Date: Wed, 3 Jul 2019 18:06:59 +0200 Subject: [PATCH] Fix shrinking. --- src/memory/mmap_bytebuf.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/memory/mmap_bytebuf.rs b/src/memory/mmap_bytebuf.rs index d9e7ed8..ee6478e 100644 --- a/src/memory/mmap_bytebuf.rs +++ b/src/memory/mmap_bytebuf.rs @@ -153,7 +153,9 @@ impl ByteBuf { ) .as_slice(); let dst = new_mmap.as_slice_mut(); - dst[..src.len()].copy_from_slice(src); + let amount = src.len().min(dst.len()); + dst[..amount].copy_from_slice(&src[..amount]); + } Some(new_mmap) @@ -197,3 +199,17 @@ impl ByteBuf { Ok(()) } } + +#[cfg(test)] +mod tests { + use super::ByteBuf; + + const PAGE_SIZE: usize = 4096; + + // This is not required since wasm memories can only grow but nice to have. + #[test] + fn byte_buf_shrink() { + let mut byte_buf = ByteBuf::new(PAGE_SIZE * 3).unwrap(); + byte_buf.realloc(PAGE_SIZE * 2).unwrap(); + } +}