Browse Source

remove .map_err(), use From<> instead

x 3 years ago
parent
commit
b4a0b70cbf
3 changed files with 20 additions and 5 deletions
  1. 17 2
      src/error.rs
  2. 2 2
      src/runtime/memory.rs
  3. 1 1
      src/runtime/vm_runtime.rs

+ 17 - 2
src/error.rs

@@ -288,11 +288,11 @@ pub enum Error {
 
     #[cfg(feature = "wasm-runtime")]
     #[error("wasm memory error")]
-    WasmerMemoryError,
+    WasmerMemoryError(String),
 
     #[cfg(feature = "wasm-runtime")]
     #[error("wasm runtime out of memory")]
-    WasmerOomError,
+    WasmerOomError(String),
 
     #[cfg(feature = "wasm-runtime")]
     #[error("contract execution error")]
@@ -576,3 +576,18 @@ impl From<wasmer::InstantiationError> for Error {
         Self::WasmerInstantiationError(err.to_string())
     }
 }
+
+#[cfg(feature = "wasm-runtime")]
+impl From<wasmer::MemoryAccessError> for Error {
+    fn from(err: wasmer::MemoryAccessError) -> Self {
+        Self::WasmerMemoryError(err.to_string())
+    }
+}
+
+#[cfg(feature = "wasm-runtime")]
+impl From<wasmer::MemoryError> for Error {
+    fn from(err: wasmer::MemoryError) -> Self {
+        Self::WasmerOomError(err.to_string())
+    }
+}
+

+ 2 - 2
src/runtime/memory.rs

@@ -31,9 +31,9 @@ impl<'a> MemoryManipulation for MemoryView<'a> {
         let ptr: WasmPtr<u8> = WasmPtr::new(mem_offset);
 
         // Write to the slice
-        let slice = ptr.slice(self, value_slice.len() as u32).map_err(|_| Error::WasmerOomError)?;
+        let slice = ptr.slice(self, value_slice.len() as u32)?;
 
-        slice.write_slice(value_slice).map_err(|_| Error::WasmerOomError)
+        Ok(slice.write_slice(value_slice)?)
     }
 
     fn read_slice(&self, value_len: usize, mem_offset: u32) -> Option<&[u8]> {

+ 1 - 1
src/runtime/vm_runtime.rs

@@ -217,7 +217,7 @@ impl Runtime {
         // Grab memory by value
         let memory = self.take_memory();
         // Modify the memory
-        memory.grow(&mut self.store, Pages(pages)).map_err(|_| Error::WasmerMemoryError)?;
+        memory.grow(&mut self.store, Pages(pages))?;
         // Replace the memory back again
         self.ctx.as_mut(&mut self.store).memory = Some(memory);
         Ok(())