From 0560f842ba4e428fc3be520f601c594e3cc255b4 Mon Sep 17 00:00:00 2001 From: cedric Date: Thu, 16 Jun 2011 09:16:03 +0000 Subject: [PATCH] ecore: fix ecore_x_selection_convert not taking selection length into account. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@60382 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- ChangeLog | 4 ++++ src/lib/ecore_x/xlib/ecore_x_selection.c | 10 ++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5e2fb47..d31525a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -220,3 +220,7 @@ * Add ecore_con_ssl_client/server_upgrade to begin asynchronously upgrading an existing connection to SSL/TLS, emitting ECORE_CON_CLIENT/SERVER_UPGRADE event upon completion. + +2011-06-16 Cedric Bail + + * Fix ecore_x_selection_convert not taking selection length into account. diff --git a/src/lib/ecore_x/xlib/ecore_x_selection.c b/src/lib/ecore_x/xlib/ecore_x_selection.c index aeb30d3..5d7f417 100644 --- a/src/lib/ecore_x/xlib/ecore_x_selection.c +++ b/src/lib/ecore_x/xlib/ecore_x_selection.c @@ -600,8 +600,10 @@ _ecore_x_selection_converter_text(char *target, #endif /* ifdef X_HAVE_UTF8_STRING */ else return EINA_FALSE; - if (!(mystr = strdup(data))) - return EINA_FALSE; + + mystr = alloca(size + 1); + memcpy(mystr, data, size); + mystr[size] = '\0'; #ifdef X_HAVE_UTF8_STRING if (Xutf8TextListToTextProperty(_ecore_x_disp, &mystr, 1, style, @@ -611,13 +613,11 @@ _ecore_x_selection_converter_text(char *target, *data_ret = malloc(bufsize); if (!*data_ret) { - free(mystr); return EINA_FALSE; } memcpy(*data_ret, text_prop.value, bufsize); *size_ret = bufsize; XFree(text_prop.value); - free(mystr); return EINA_TRUE; } @@ -631,14 +631,12 @@ _ecore_x_selection_converter_text(char *target, memcpy(*data_ret, text_prop.value, bufsize); *size_ret = bufsize; XFree(text_prop.value); - free(mystr); return EINA_TRUE; } #endif /* ifdef X_HAVE_UTF8_STRING */ else { - free(mystr); return EINA_TRUE; } } /* _ecore_x_selection_converter_text */ -- 2.7.4