bindings: Fix disposal of eolian state

Summary:
It was actually leaking before. Let's use some RAII classes that were
already there.

ref T8280

Reviewers: q66, felipealmeida, brunobelo

Reviewed By: q66

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8280

Differential Revision: https://phab.enlightenment.org/D10237
This commit is contained in:
Lauro Moura 2019-09-30 15:38:34 +02:00 committed by Daniel Kolesa
parent 62139f2292
commit 507061a145
2 changed files with 7 additions and 33 deletions

View File

@ -40,10 +40,6 @@ struct options_type
bool main_header;
options_type() : main_header(false) {}
~options_type()
{
eolian_state_free(state);
}
};
static efl::eina::log_domain domain("eolian_cxx");
@ -385,19 +381,6 @@ run(options_type const& opts)
}
}
static void
state_init(options_type const& opts)
{
Eolian_State *eos = ::eolian_state_new();
if (!eos)
{
EINA_CXX_DOM_LOG_ERR(eolian_cxx::domain)
<< "Eolian failed creating state";
assert(false && "Error creating Eolian state");
}
opts.state = eos;
}
static void
database_load(options_type const& opts)
{
@ -532,8 +515,9 @@ int main(int argc, char **argv)
{
efl::eina::eina_init eina_init;
efl::eolian::eolian_init eolian_init;
efl::eolian::eolian_state eolian_state;
eolian_cxx::options_type opts = opts_get(argc, argv);
eolian_cxx::state_init(opts);
opts.state = eolian_state.value;
eolian_cxx::database_load(opts);
eolian_cxx::run(opts);
}

View File

@ -173,6 +173,8 @@ run(options_type const& opts)
throw std::runtime_error("Failed to generate alias.");
}
}
::eina_iterator_free(aliases);
// Constants
{
@ -226,20 +228,6 @@ run(options_type const& opts)
}
}
static void
state_init(options_type const& opts)
{
Eolian_State *eos = ::eolian_state_new();
if (!eos)
{
EINA_CXX_DOM_LOG_ERR(eolian_mono::domain)
<< "Eolian failed creating state";
assert(false && "Error creating state");
}
opts.state = eos;
opts.unit = (Eolian_Unit*)eos;
}
static void
database_load(options_type const& opts)
{
@ -420,8 +408,10 @@ int main(int argc, char **argv)
{
efl::eina::eina_init eina_init;
efl::eolian::eolian_init eolian_init;
efl::eolian::eolian_state eolian_state;
eolian_mono::options_type opts = opts_get(argc, argv);
eolian_mono::state_init(opts);
opts.state = eolian_state.value;
opts.unit = eolian_state.as_unit();
eolian_mono::database_load(opts);
eolian_mono::run(opts);
}