e_xkb_layout_get can return NULL so trap for that and only set the
authorChris Michael <cp.michael@samsung.com>
Fri, 3 May 2013 05:38:24 +0000 (06:38 +0100)
committerChris Michael <cp.michael@samsung.com>
Fri, 3 May 2013 05:39:00 +0000 (06:39 +0100)
names.layout below if needed.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
src/bin/e_comp_wl.c

index dc3eb50..ac6a329 100644 (file)
@@ -839,10 +839,11 @@ _e_comp_wl_input_keymap_get(void)
 
    memset(&names, 0, sizeof(names));
 
-   kbd_layout = e_xkb_layout_get();
-
-   names.model = strdup(kbd_layout->model);
-   names.layout = strdup(kbd_layout->name);
+   if ((kbd_layout = e_xkb_layout_get()))
+     {
+        names.model = strdup(kbd_layout->model);
+        names.layout = strdup(kbd_layout->name);
+     }
 
    /* if we are running under X11, try to get the xkb rule names atom */
    if (getenv("DISPLAY"))
@@ -870,10 +871,11 @@ _e_comp_wl_input_keymap_get(void)
           {
              names.rules = strdup((const char *)data);
              data += strlen((const char *)data) + 1;
-             /* names.model = strdup((const char *)data); */
-             /* data += strlen((const char *)data) + 1; */
-             /* names.layout = strdup((const char *)data); */
-//             free(data);
+             if (!names.model)
+               names.model = strdup((const char *)data);
+             data += strlen((const char *)data) + 1;
+             if (!names.layout)
+               names.layout = strdup((const char *)data);
           }
      }