diff --git a/src/lib/ecore_x/xcb/ecore_xcb_window_prop.c b/src/lib/ecore_x/xcb/ecore_xcb_window_prop.c index 85db1ebcb2..d3a049bb4c 100644 --- a/src/lib/ecore_x/xcb/ecore_xcb_window_prop.c +++ b/src/lib/ecore_x/xcb/ecore_xcb_window_prop.c @@ -518,7 +518,7 @@ ecore_x_window_prop_xid_list_change(Ecore_X_Window win, Ecore_X_ID item, int op) { - Ecore_X_ID *lst; + Ecore_X_ID *lst, *temp; int i = 0, num = 0; LOGFN(__FILE__, __LINE__, __FUNCTION__); @@ -545,8 +545,12 @@ ecore_x_window_prop_xid_list_change(Ecore_X_Window win, if (op == ECORE_X_PROP_LIST_REMOVE) goto done; num++; + temp = lst; lst = realloc(lst, num * sizeof(Ecore_X_ID)); - lst[i] = item; + if (lst) + lst[i] = item; + else + lst = temp; } ecore_x_window_prop_xid_set(win, atom, type, lst, num);