jihoon pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=bae1c701ba189d14b1759f77bebcab135345c33a

commit bae1c701ba189d14b1759f77bebcab135345c33a
Author: Jihoon Kim <jihoon48....@samsung.com>
Date:   Tue Jun 16 16:27:29 2015 +0900

    ecore_imf/wayland: Add NULL check before accessing
---
 src/modules/ecore_imf/wayland/wayland_imcontext.c | 44 +++++++++++++++--------
 1 file changed, 30 insertions(+), 14 deletions(-)

diff --git a/src/modules/ecore_imf/wayland/wayland_imcontext.c 
b/src/modules/ecore_imf/wayland/wayland_imcontext.c
index 7601474..fa0b739 100644
--- a/src/modules/ecore_imf/wayland/wayland_imcontext.c
+++ b/src/modules/ecore_imf/wayland/wayland_imcontext.c
@@ -97,7 +97,7 @@ utf8_offset_to_characters(const char *str, int offset)
 static void
 update_state(WaylandIMContext *imcontext)
 {
-   char *surrounding;
+   char *surrounding = NULL;
    int cursor_pos;
    Ecore_Evas *ee;
    int canvas_x = 0, canvas_y = 0;
@@ -111,7 +111,9 @@ update_state(WaylandIMContext *imcontext)
         if (imcontext->text_input)
           wl_text_input_set_surrounding_text(imcontext->text_input, 
surrounding, 
                                              cursor_pos, cursor_pos);
-        free(surrounding);
+
+        if (surrounding)
+          free(surrounding);
      }
 
    if (imcontext->canvas)
@@ -155,8 +157,12 @@ check_serial(WaylandIMContext *imcontext, uint32_t serial)
         imcontext->pending_commit.anchor = 0;
 
         imcontext->pending_preedit.cursor = 0;
-        EINA_LIST_FREE(imcontext->pending_preedit.attrs, attr) free(attr);
-        imcontext->pending_preedit.attrs = NULL;
+
+        if (imcontext->pending_preedit.attrs)
+          {
+             EINA_LIST_FREE(imcontext->pending_preedit.attrs, attr) free(attr);
+             imcontext->pending_preedit.attrs = NULL;
+          }
 
         return EINA_FALSE;
      }
@@ -167,18 +173,27 @@ check_serial(WaylandIMContext *imcontext, uint32_t serial)
 static void
 clear_preedit(WaylandIMContext *imcontext)
 {
-   Ecore_IMF_Preedit_Attr *attr;
+   Ecore_IMF_Preedit_Attr *attr = NULL;
 
    imcontext->preedit_cursor = 0;
 
-   free(imcontext->preedit_text);
-   imcontext->preedit_text = NULL;
+   if (imcontext->preedit_text)
+     {
+        free(imcontext->preedit_text);
+        imcontext->preedit_text = NULL;
+     }
 
-   free(imcontext->preedit_commit);
-   imcontext->preedit_commit = NULL;
+   if (imcontext->preedit_commit)
+     {
+        free(imcontext->preedit_commit);
+        imcontext->preedit_commit = NULL;
+     }
 
-   EINA_LIST_FREE(imcontext->preedit_attrs, attr)
-     free(attr);
+   if (imcontext->preedit_attrs)
+     {
+        EINA_LIST_FREE(imcontext->preedit_attrs, attr)
+           free(attr);
+     }
 
    imcontext->preedit_attrs = NULL;
 }
@@ -191,7 +206,7 @@ text_input_commit_string(void                 *data,
 {
    WaylandIMContext *imcontext = (WaylandIMContext *)data;
    Eina_Bool old_preedit = EINA_FALSE;
-   char *surrounding;
+   char *surrounding = NULL;
    int cursor_pos, cursor;
    Ecore_IMF_Event_Delete_Surrounding ev;
 
@@ -240,7 +255,8 @@ text_input_commit_string(void                 *data,
                      "delete on commit (text: `%s', offset `%d', length: 
`%d')",
                      surrounding, ev.offset, ev.n_chars);
 
-             free(surrounding);
+             if (surrounding)
+               free(surrounding);
 
              ecore_imf_context_delete_surrounding_event_add(imcontext->ctx, 
ev.offset, ev.n_chars);
              ecore_imf_context_event_callback_call(imcontext->ctx, 
ECORE_IMF_CALLBACK_DELETE_SURROUNDING, &ev);
@@ -350,7 +366,7 @@ text_input_preedit_string(void                 *data,
                                          ECORE_IMF_CALLBACK_PREEDIT_CHANGED, 
                                          NULL);
 
-   if (strlen(imcontext->preedit_text) == 0)
+   if (imcontext->preedit_text && strlen(imcontext->preedit_text) == 0)
      {
         ecore_imf_context_preedit_end_event_add(imcontext->ctx);
         ecore_imf_context_event_callback_call(imcontext->ctx, 

-- 


Reply via email to