From 507061a145b8201f97e9ca8a269947174c3995ac Mon Sep 17 00:00:00 2001 From: Lauro Moura Date: Mon, 30 Sep 2019 15:38:34 +0200 Subject: [PATCH] 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 --- src/bin/eolian_cxx/eolian_cxx.cc | 20 ++------------------ src/bin/eolian_mono/eolian_mono.cc | 20 +++++--------------- 2 files changed, 7 insertions(+), 33 deletions(-) diff --git a/src/bin/eolian_cxx/eolian_cxx.cc b/src/bin/eolian_cxx/eolian_cxx.cc index 6f719f178f..636d1ebc9a 100644 --- a/src/bin/eolian_cxx/eolian_cxx.cc +++ b/src/bin/eolian_cxx/eolian_cxx.cc @@ -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); } diff --git a/src/bin/eolian_mono/eolian_mono.cc b/src/bin/eolian_mono/eolian_mono.cc index 83379b28cb..97996d9093 100644 --- a/src/bin/eolian_mono/eolian_mono.cc +++ b/src/bin/eolian_mono/eolian_mono.cc @@ -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); }