From 675da7bfe84c6a2dc4b1b71665875c902b63d46b Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Sun, 31 Dec 2023 10:05:42 -0800 Subject: [PATCH] Free C error message properly when loading wasm language fails --- lib/binding_rust/wasm_language.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/binding_rust/wasm_language.rs b/lib/binding_rust/wasm_language.rs index db777f07..7830c542 100644 --- a/lib/binding_rust/wasm_language.rs +++ b/lib/binding_rust/wasm_language.rs @@ -1,7 +1,7 @@ -use crate::{ffi, Language, LanguageError, Parser}; +use crate::{ffi, Language, LanguageError, Parser, FREE_FN}; use std::{ error, - ffi::CString, + ffi::{CStr, CString}, fmt, mem::{self, MaybeUninit}, os::raw::c_char, @@ -77,7 +77,8 @@ impl WasmStore { impl WasmError { unsafe fn new(error: ffi::TSWasmError) -> Self { - let message = CString::from_raw(error.message); + let message = CStr::from_ptr(error.message).to_str().unwrap().to_string(); + (FREE_FN)(error.message as *mut _); Self { kind: match error.kind { ffi::TSWasmErrorKindParse => WasmErrorKind::Parse, @@ -85,7 +86,7 @@ impl WasmError { ffi::TSWasmErrorKindInstantiate => WasmErrorKind::Instantiate, _ => WasmErrorKind::Other, }, - message: message.into_string().unwrap(), + message, } } }