Fix memory leaks

This commit is contained in:
2026-01-31 23:23:08 +00:00
parent 04cce4224e
commit 154e557339
10 changed files with 440 additions and 373 deletions

View File

@@ -1,6 +1,7 @@
#ifndef SYNTAX_LANGS_H
#define SYNTAX_LANGS_H
#include "scripting/decl.h"
#include "syntax/decl.h"
#define DEF_LANG(name) \
@@ -15,6 +16,12 @@
#name, { name##_parse, name##_state_match } \
}
struct CustomState {
mrb_value state;
CustomState(mrb_value s) : state(s) { mrb_gc_register(mrb, state); }
~CustomState() { mrb_gc_unregister(mrb, state); }
};
template <typename T>
inline std::shared_ptr<T> ensure_state(std::shared_ptr<T> state) {
using U = typename T::full_state_type;