Fix memory leaks

This commit is contained in:
King_DuckZ 2022-05-15 19:19:56 +02:00
commit 692393285d
5 changed files with 24 additions and 23 deletions

View file

@ -51,7 +51,7 @@ namespace wren {
char* (*load_module_fn)(Configuration&, VM*, wren_string_t) {nullptr};
foreign_method_t (*foreign_method_fn)(Configuration&, VM*, wren_string_t, wren_string_t, bool, wren_string_t) {nullptr};
foreign_class_t (*foreign_class_fn)(Configuration&, VM*, wren_string_t, wren_string_t) {nullptr};
void (*load_module_complete_fn)(Configuration&, VM*, wren_string_t);
void (*load_module_complete_fn)(Configuration&, VM*, wren_string_t, char*) {nullptr};
Configuration* config_obj {nullptr};
VM* owner {nullptr};
@ -130,6 +130,7 @@ namespace wren {
define_method_info(load_module_fn, load_module, char*, VM*, wren_string_t);
define_method_info(foreign_method_fn, foreign_method, foreign_method_t, VM*, wren_string_t, wren_string_t, bool, wren_string_t);
define_method_info(foreign_class_fn, foreign_class, foreign_class_t, VM*, wren_string_t, wren_string_t);
define_method_info(load_module_complete_fn, load_module_complete, void, VM*, wren_string_t, char*);
template <typename T, typename F> struct AnyFunctionWrap;
template <typename T, typename R, typename... Args>
@ -185,6 +186,9 @@ namespace wren {
if constexpr (detail::method_foreign_class::exists<T>::value)
ret.foreign_class_fn = &detail::AnyFunctionWrap<T, decltype(&T::foreign_class_fn)>::template call<&T::foreign_class_fn>;
if constexpr (detail::method_load_module_complete::exists<T>::value)
ret.load_module_complete_fn = &detail::AnyFunctionWrap<T, decltype(&T::load_module_complete_fn)>::template call<&T::load_module_complete_fn>;
return ret;
}