From 5d0c45c562f4335276847e5e5efb7fdc7ce463a4 Mon Sep 17 00:00:00 2001 From: Seoyeon Kim Date: Thu, 31 Aug 2017 20:18:59 +0900 Subject: [PATCH] [Tizen] Fix Set and Get InputPanelUserData() - Fixed SetInputPanelUserData() and GetInputPanelUserData() code Change-Id: I9bc9da2093ae86fbea0e343d6c489cfe848e4aa2 Signed-off-by: Seoyeon Kim --- adaptors/ecore/wayland/imf-manager-impl-ecore-wl.cpp | 12 +++++++++--- adaptors/x11/imf-manager-impl-x.cpp | 12 +++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/adaptors/ecore/wayland/imf-manager-impl-ecore-wl.cpp b/adaptors/ecore/wayland/imf-manager-impl-ecore-wl.cpp index 5764c3a..0f23a74 100644 --- a/adaptors/ecore/wayland/imf-manager-impl-ecore-wl.cpp +++ b/adaptors/ecore/wayland/imf-manager-impl-ecore-wl.cpp @@ -763,7 +763,7 @@ void ImfManager::SetInputPanelUserData( const std::string& data ) if( mIMFContext ) { int length = data.length(); - ecore_imf_context_input_panel_imdata_set( mIMFContext, &data, length ); + ecore_imf_context_input_panel_imdata_set( mIMFContext, data.c_str(), length ); } } @@ -773,8 +773,14 @@ void ImfManager::GetInputPanelUserData( std::string& data ) if( mIMFContext ) { - int* length = NULL; - ecore_imf_context_input_panel_imdata_get( mIMFContext, &data, length ); + int length = 256; + char* buffer = reinterpret_cast< char* >( calloc ( 1, length * sizeof ( char ) ) ); + if( buffer != NULL ) + { + ecore_imf_context_input_panel_imdata_get( mIMFContext, buffer, &length ); + data = buffer; + free( buffer ); + } } } diff --git a/adaptors/x11/imf-manager-impl-x.cpp b/adaptors/x11/imf-manager-impl-x.cpp index e0fa762..f8c9811 100644 --- a/adaptors/x11/imf-manager-impl-x.cpp +++ b/adaptors/x11/imf-manager-impl-x.cpp @@ -597,7 +597,7 @@ void ImfManager::SetInputPanelUserData( const std::string& data ) if( mIMFContext ) { int length = data.length(); - ecore_imf_context_input_panel_imdata_set( mIMFContext, &data, length ); + ecore_imf_context_input_panel_imdata_set( mIMFContext, data.c_str(), length ); } } @@ -607,8 +607,14 @@ void ImfManager::GetInputPanelUserData( std::string& data ) if( mIMFContext ) { - int* length = NULL; - ecore_imf_context_input_panel_imdata_get( mIMFContext, &data, length ); + int length = 256; + char* buffer = reinterpret_cast< char* >( calloc ( 1, length * sizeof ( char ) ) ); + if( buffer != NULL ) + { + ecore_imf_context_input_panel_imdata_get( mIMFContext, buffer, &length ); + data = buffer; + free( buffer ); + } } } -- 2.7.4