[4.0] Fix Set and Get InputPanelUserData() 30/148930/2
authorHeeyong Song <heeyong.song@samsung.com>
Mon, 11 Sep 2017 07:03:38 +0000 (16:03 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Mon, 11 Sep 2017 08:01:12 +0000 (17:01 +0900)
Change-Id: Ia3d1ccdae71a6842faf41d1a8887e8ceff77525d

adaptors/ecore/wayland/imf-manager-impl-ecore-wl.cpp
adaptors/x11/imf-manager-impl-x.cpp

index edd8899..e566ab9 100644 (file)
@@ -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 );
+    }
   }
 }
 
index c9bef9c..cdae0be 100644 (file)
@@ -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 );
+    }
   }
 }