segv if preedit str null!
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 26 Jul 2011 11:47:40 +0000 (11:47 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 26 Jul 2011 11:47:40 +0000 (11:47 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@61747 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/modules/immodules/xim/ecore_imf_xim.c

index d35eb70..bc8f3f8 100644 (file)
@@ -177,12 +177,22 @@ _ecore_imf_context_xim_preedit_string_get(Ecore_IMF_Context *ctx,
    char *utf8;
    int len;
    imf_context_data = ecore_imf_context_data_get(ctx);
-   utf8 = eina_unicode_unicode_to_utf8(imf_context_data->preedit_chars,
-                                       &len);
-   if(str)
-     *str = utf8;
+   if (imf_context_data->preedit_chars)
+     {
+        utf8 = eina_unicode_unicode_to_utf8(imf_context_data->preedit_chars,
+                                            &len);
+        if(str)
+           *str = utf8;
+        else
+           free(utf8);
+     }
    else
-     free(utf8);
+     {
+        if(str)
+           *str = NULL;
+        if(cursor_pos)
+           *cursor_pos = 0;
+     }
 
    if(cursor_pos)
      *cursor_pos = imf_context_data->preedit_cursor;