summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLauro Moura <lauromoura@expertisesolutions.com.br>2019-09-30 15:38:34 +0200
committerDaniel Kolesa <d.kolesa@samsung.com>2019-09-30 16:08:24 +0200
commit507061a145b8201f97e9ca8a269947174c3995ac (patch)
tree9651df8085dd4048ed87f1af92d1acaff29b8b2d
parent62139f2292c9eb0136559fbc0f51300285f39e30 (diff)
downloadefl-507061a145b8201f97e9ca8a269947174c3995ac.tar.gz
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
-rw-r--r--src/bin/eolian_cxx/eolian_cxx.cc20
-rw-r--r--src/bin/eolian_mono/eolian_mono.cc20
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");
@@ -386,19 +382,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)
{
for (auto src : opts.include_dirs)
@@ -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
{
@@ -227,20 +229,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)
{
for (auto src : opts.include_dirs)
@@ -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);
}