diff --git a/src/binding.cc b/src/binding.cc index ee887b32..f24b32b9 100644 --- a/src/binding.cc +++ b/src/binding.cc @@ -2139,6 +2139,8 @@ v8::CFunctionInfo* v8__CFunctionInfo__New( return info.release(); } +void v8__CFunctionInfo__DELETE(v8::CFunctionInfo* self) { delete self; } + const v8::FunctionTemplate* v8__FunctionTemplate__New( v8::Isolate* isolate, v8::FunctionCallback callback, const v8::Value* data_or_null, const v8::Signature* signature_or_null, diff --git a/src/fast_api.rs b/src/fast_api.rs index 7f1667b5..6d5efa21 100644 --- a/src/fast_api.rs +++ b/src/fast_api.rs @@ -20,6 +20,7 @@ extern "C" { args_info: *const CTypeInfo, repr: Int64Representation, ) -> *mut CFunctionInfo; + fn v8__CFunctionInfo__DELETE(this: &mut CFunctionInfo); } #[repr(C)] @@ -47,6 +48,12 @@ impl CFunctionInfo { } } +impl Drop for CFunctionInfo { + fn drop(&mut self) { + unsafe { v8__CFunctionInfo__DELETE(self) }; + } +} + #[repr(C)] #[derive(Debug)] pub struct CTypeInfo(Opaque);