diff --git a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_events.c b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_events.c index beb4cf214b..fabf54f6fb 100644 --- a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_events.c +++ b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_events.c @@ -2342,7 +2342,7 @@ _ecore_xcb_event_key_press(xcb_generic_event_t *event) xcb_keycode_t keycode = 0; xcb_key_press_event_t *xevent; char *keyname = NULL, *key = NULL; - char *compose = NULL; + char *compose = NULL, *tmp = NULL; char compose_buffer[256]; int val = 0; @@ -2369,7 +2369,10 @@ _ecore_xcb_event_key_press(xcb_generic_event_t *event) compose_buffer[val] = 0; compose = eina_str_convert(nl_langinfo(CODESET), "UTF-8", compose_buffer); -// tmp = compose; + if (!compose) + ERR("Ecore_X cannot convert input key string '%s' to UTF-8. " + "Is Eina built with iconv support?", compose_buffer); + tmp = compose; } key = _ecore_xcb_keymap_keysym_to_string(sym); @@ -2401,6 +2404,10 @@ _ecore_xcb_event_key_press(xcb_generic_event_t *event) ecore_event_add(ECORE_EVENT_KEY_DOWN, e, NULL, NULL); } _ecore_xcb_event_last_time = xevent->time; + +on_error: + if (tmp) + free(tmp); } static void diff --git a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_events.c b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_events.c index 54d3a85566..136cd63ad4 100644 --- a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_events.c +++ b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_events.c @@ -302,6 +302,9 @@ _ecore_key_press(int event, compose_buffer[val] = 0; compose = eina_str_convert(nl_langinfo(CODESET), "UTF-8", compose_buffer); + if (!compose) + ERR("Ecore_X cannot convert input key string '%s' to UTF-8. " + "Is Eina built with iconv support?", compose_buffer); tmp = compose; }