Skip to content

Commit 147d153

Browse files
Merge pull request #2260 from multiversx/utf8-lossy
vm - signal error utf-8 lossy
2 parents d886448 + 57e7c43 commit 147d153

File tree

2 files changed

+7
-17
lines changed

2 files changed

+7
-17
lines changed

chain/vm/src/host/vm_hooks/vh_handler/vh_error.rs

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,16 @@
11
use multiversx_chain_core::types::ReturnCode;
22
use multiversx_chain_vm_executor::VMHooksEarlyExit;
33

4-
use crate::{
5-
host::vm_hooks::{VMHooksContext, vh_early_exit::early_exit_vm_error},
6-
types::RawHandle,
7-
};
4+
use crate::{host::vm_hooks::VMHooksContext, types::RawHandle};
85

96
use super::VMHooksHandler;
107

118
impl<C: VMHooksContext> VMHooksHandler<C> {
129
pub fn signal_error(&mut self, message: &[u8]) -> Result<(), VMHooksEarlyExit> {
13-
match String::from_utf8(message.to_owned()) {
14-
Ok(message_string) => {
15-
self.error_trace(&message_string);
16-
Err(VMHooksEarlyExit::new(ReturnCode::UserError.as_u64())
17-
.with_message(message_string))
18-
}
19-
Err(_) => Err(early_exit_vm_error("error message utf-8 error")),
20-
}
10+
let message_string = String::from_utf8_lossy(message);
11+
self.error_trace(&message_string);
12+
Err(VMHooksEarlyExit::new(ReturnCode::UserError.as_u64())
13+
.with_message(message_string.to_string()))
2114
}
2215

2316
pub fn signal_error_from_buffer(

framework/base/src/types/managed/basic/managed_buffer.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -583,11 +583,8 @@ impl<M: ManagedTypeApi> core::fmt::Debug for ManagedBuffer<M> {
583583

584584
impl<M: ManagedTypeApi> core::fmt::Display for ManagedBuffer<M> {
585585
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
586-
use crate::contract_base::ErrorHelper;
587-
588-
let s = alloc::string::String::from_utf8(self.to_boxed_bytes().into_vec())
589-
.unwrap_or_else(|err| ErrorHelper::<M>::signal_error_with_message(err.as_bytes()));
590-
586+
let bytes = self.to_boxed_bytes();
587+
let s = alloc::string::String::from_utf8_lossy(bytes.as_slice());
591588
s.fmt(f)
592589
}
593590
}

0 commit comments

Comments
 (0)