diff options
author | Lauro Moura <lauromoura@expertisesolutions.com.br> | 2018-09-05 14:07:28 -0300 |
---|---|---|
committer | Vitor Sousa <vitorsousa@expertisesolutions.com.br> | 2018-09-05 14:19:39 -0300 |
commit | 5e107aa19dc944e38624a0fa5a61a54db7f8035c (patch) | |
tree | 7c9dc15e71bf5268c4d7edda5bbd71ad03e967fb | |
parent | 1e52108644becc9972c2101046cece23eb3268f9 (diff) | |
download | efl-5e107aa19dc944e38624a0fa5a61a54db7f8035c.tar.gz |
efl-csharp: Make sure efl_finalize overrides are callable
Summary:
efl_finalize override is called inside efl_add_end. Previously by this
time the constructor still hadn't saved the C# wrapper handle into the
Eo instance private data, to be recovered in the static delegates that
call the C# overrides.
This commit just changes the order to save the C# handle *before*
calling efl_add_end.
Test Plan: added unit test to be run with make check
Reviewers: felipealmeida, vitor.sousa, Jaehyun_Cho
Reviewed By: vitor.sousa
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6956
-rw-r--r-- | src/bin/eolian_mono/eolian/mono/klass.hh | 2 | ||||
-rw-r--r-- | src/tests/efl_mono/Eo.cs | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/bin/eolian_mono/eolian/mono/klass.hh b/src/bin/eolian_mono/eolian/mono/klass.hh index 7b632da64d..4eea1e852f 100644 --- a/src/bin/eolian_mono/eolian/mono/klass.hh +++ b/src/bin/eolian_mono/eolian/mono/klass.hh @@ -316,8 +316,8 @@ struct klass << scope_tab << scope_tab << "if (init_cb != null) {\n" << scope_tab << scope_tab << scope_tab << "init_cb(this);\n" << scope_tab << scope_tab << "}\n" - << scope_tab << scope_tab << "handle = efl.eo.Globals.instantiate_end(handle);\n" << scope_tab << scope_tab << "efl.eo.Globals.data_set(this);\n" + << scope_tab << scope_tab << "handle = efl.eo.Globals.instantiate_end(handle);\n" << scope_tab << scope_tab << "eina.Error.RaiseIfOccurred();\n" << scope_tab << "}\n" << scope_tab << "///<summary>Destructor.</summary>\n" diff --git a/src/tests/efl_mono/Eo.cs b/src/tests/efl_mono/Eo.cs index 997876b52f..5b88f57464 100644 --- a/src/tests/efl_mono/Eo.cs +++ b/src/tests/efl_mono/Eo.cs @@ -246,4 +246,24 @@ class TestEoAccessors } } +class TestEoFinalize +{ + public sealed class Inherit : efl.ObjectInherit + { + public bool finalizeCalled = false; + public override efl.IObject FinalizeAdd() + { + finalizeCalled = true; + return this; + } + } + + + public static void finalize_call() + { + Inherit inherit = new Inherit(); + Test.Assert(inherit.finalizeCalled); + } +} + } |