diff options
author | Peng Wu <alexepico@gmail.com> | 2018-06-15 11:36:12 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2018-06-15 11:36:12 +0800 |
commit | 766a1322395e32286930a62b9f66033a0d8d637c (patch) | |
tree | 7de09b05eba63d1c700339df8c5262a243c98dff | |
parent | 89e6d4c522217278ac24d5f4cfc38162a267c9a3 (diff) | |
download | ibus-libpinyin-766a1322395e32286930a62b9f66033a0d8d637c.tar.gz ibus-libpinyin-766a1322395e32286930a62b9f66033a0d8d637c.tar.xz ibus-libpinyin-766a1322395e32286930a62b9f66033a0d8d637c.zip |
fixes lua memory leak
-rw-r--r-- | lua/lua-plugin.c | 2 | ||||
-rw-r--r-- | lua/lua-plugin.h | 2 | ||||
-rw-r--r-- | src/PYPLuaConverterCandidates.cc | 10 | ||||
-rw-r--r-- | src/PYPLuaTriggerCandidates.cc | 13 |
4 files changed, 17 insertions, 10 deletions
diff --git a/lua/lua-plugin.c b/lua/lua-plugin.c index 2a193f3..167404c 100644 --- a/lua/lua-plugin.c +++ b/lua/lua-plugin.c @@ -416,7 +416,7 @@ static const lua_command_candidate_t * ibus_engine_plugin_get_candidate(lua_Stat /** * retrieve the first string value. (value has been copied.) */ -const char * ibus_engine_plugin_get_first_result(IBusEnginePlugin * plugin){ +gchar * ibus_engine_plugin_get_first_result(IBusEnginePlugin * plugin){ IBusEnginePluginPrivate * priv = IBUS_ENGINE_PLUGIN_GET_PRIVATE(plugin); const char * result = NULL; int type; lua_State * L = priv->L; diff --git a/lua/lua-plugin.h b/lua/lua-plugin.h index fb5f5b9..ebb2b2a 100644 --- a/lua/lua-plugin.h +++ b/lua/lua-plugin.h @@ -174,7 +174,7 @@ int ibus_engine_plugin_call(IBusEnginePlugin * plugin, const char * lua_function /** * retrieve the first string value. (value has been copied.) */ -const char * ibus_engine_plugin_get_first_result(IBusEnginePlugin * plugin); +gchar * ibus_engine_plugin_get_first_result(IBusEnginePlugin * plugin); /** * retrieve the retval string value. (value has been copied.) diff --git a/src/PYPLuaConverterCandidates.cc b/src/PYPLuaConverterCandidates.cc index e4608f4..a581c13 100644 --- a/src/PYPLuaConverterCandidates.cc +++ b/src/PYPLuaConverterCandidates.cc @@ -75,8 +75,9 @@ LuaConverterCandidates::processCandidates (std::vector<EnhancedCandidate> & cand ibus_engine_plugin_call (m_lua_plugin, converter, enhanced.m_display_string.c_str ()); - enhanced.m_display_string = - ibus_engine_plugin_get_first_result (m_lua_plugin); + gchar * string = ibus_engine_plugin_get_first_result (m_lua_plugin); + enhanced.m_display_string = string; + g_free (string); } return TRUE; @@ -100,8 +101,9 @@ LuaConverterCandidates::selectCandidate (EnhancedCandidate & enhanced) if (SELECT_CANDIDATE_MODIFY_IN_PLACE_AND_COMMIT == action) { ibus_engine_plugin_call (m_lua_plugin, converter, enhanced.m_display_string.c_str ()); - enhanced.m_display_string = - ibus_engine_plugin_get_first_result (m_lua_plugin); + gchar * string = ibus_engine_plugin_get_first_result (m_lua_plugin); + enhanced.m_display_string = string; + g_free (string); } return action; diff --git a/src/PYPLuaTriggerCandidates.cc b/src/PYPLuaTriggerCandidates.cc index 41534b4..808e97a 100644 --- a/src/PYPLuaTriggerCandidates.cc +++ b/src/PYPLuaTriggerCandidates.cc @@ -64,12 +64,15 @@ LuaTriggerCandidates::processCandidates (std::vector<EnhancedCandidate> & candid const char * lua_function_name = NULL; const char * text = m_editor->m_text; + gchar * string = NULL; if (ibus_engine_plugin_match_input (m_lua_plugin, text, &lua_function_name)) { ibus_engine_plugin_call (m_lua_plugin, lua_function_name, text); - enhanced.m_display_string = - ibus_engine_plugin_get_first_result (m_lua_plugin); + + string = ibus_engine_plugin_get_first_result (m_lua_plugin); + enhanced.m_display_string = string; + g_free (string); candidates.insert (pos, enhanced); return TRUE; @@ -81,8 +84,10 @@ LuaTriggerCandidates::processCandidates (std::vector<EnhancedCandidate> & candid if (ibus_engine_plugin_match_candidate (m_lua_plugin, text, &lua_function_name)) { ibus_engine_plugin_call (m_lua_plugin, lua_function_name, text); - enhanced.m_display_string = - ibus_engine_plugin_get_first_result (m_lua_plugin); + + string = ibus_engine_plugin_get_first_result (m_lua_plugin); + enhanced.m_display_string = string; + g_free (string); candidates.insert (pos, enhanced); return TRUE; |