discomfitor pushed a commit to branch master.

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

commit c0e8585cce9178377a087917ddb4405e2131a461
Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Jul 28 13:49:30 2017 -0400

    free xwl selection atom names after creating selection source
---
 src/modules/xwayland/dnd.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/modules/xwayland/dnd.c b/src/modules/xwayland/dnd.c
index 8867017ab..9c188ccd9 100644
--- a/src/modules/xwayland/dnd.c
+++ b/src/modules/xwayland/dnd.c
@@ -168,9 +168,9 @@ _xwl_fixes_selection_notify(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_X_Even
      {
         if (ev->owner)
           {
-             int x, y, num;
+             int x, y, num, i;
              unsigned char *data;
-             const char **names = NULL;
+             char **names = NULL;
              Eina_Array *namelist = NULL;
              E_Comp_Wl_Data_Source *source;
 
@@ -181,22 +181,22 @@ _xwl_fixes_selection_notify(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_X_Even
                                                   &data,
                                                   &num))
                {
-                  int i;
                   Ecore_X_Atom *types = (void*)data;
 
                   names = malloc(num * sizeof(void*));
                   namelist = eina_array_new(num);
                   for (i = 0; i < num; i++)
                     {
-                       const char *name;
+                       char *name;
 
                        if (types[i] == string_atom)
                          {
-                            name = names[i] = "UTF8_STRING";
+                            name = names[i] = strdup("UTF8_STRING");
                             eina_array_push(namelist, 
eina_stringshare_add(WL_TEXT_STR));
                          }
                        else
                          names[i] = name = ecore_x_atom_name_get(types[i]);
+                       DBG("XWL TARGET: %s", name);
                        eina_array_push(namelist, eina_stringshare_add(name));
                     }
                   if (num > 3)
@@ -209,7 +209,7 @@ _xwl_fixes_selection_notify(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_X_Even
                }
              evas_pointer_canvas_xy_get(e_comp->evas, &x, &y);
              e_comp_wl->drag_client = e_pixmap_find_client(E_PIXMAP_TYPE_X, 
ev->owner);
-             e_comp_wl->drag = e_drag_new(x, y, names, num, NULL, 0, NULL, 
_xwayland_drop);
+             e_comp_wl->drag = e_drag_new(x, y, (const char**)names, num, 
NULL, 0, NULL, _xwayland_drop);
              e_comp_wl->drag->button_mask = 
evas_pointer_button_down_mask_get(e_comp->evas);
              ecore_x_window_move_resize(e_comp->cm_selection, 0, 0, e_comp->w, 
e_comp->h);
              ecore_x_window_show(e_comp->cm_selection);
@@ -224,6 +224,8 @@ _xwl_fixes_selection_notify(void *d EINA_UNUSED, int t 
EINA_UNUSED, Ecore_X_Even
              source->send = _xwayland_send_send;
              source->cancelled = _xwayland_cancelled_send;
              source->mime_types = namelist;
+             for (i = 0; i < num; i++)
+               free(names[i]);
              free(names);
           }
         else

-- 


Reply via email to