add AMAZING hack to work around a bug that crashes you instantly if you try to cnp in elm

SVN revision: 62847
This commit is contained in:
Mike Blumenkrantz 2011-08-26 02:32:49 +00:00
parent db7acf5726
commit 841597474a
1 changed files with 39 additions and 15 deletions

View File

@ -984,14 +984,21 @@ text_converter(char *target __UNUSED__, void *data, int size __UNUSED__, void **
}
static Eina_Bool
edje_converter(char *target __UNUSED__, void *data, int size __UNUSED__, void **data_ret, int *size_ret, Ecore_X_Atom *ttype __UNUSED__, int *typesize __UNUSED__)
edje_converter(char *target __UNUSED__, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype __UNUSED__, int *typesize __UNUSED__)
{
Cnp_Selection *sel;
sel = selections + *((int *)data);
if (data_ret) *data_ret = strdup(sel->selbuf);
if (size_ret) *size_ret = strlen(sel->selbuf);
if (size == sizeof(int))
{
Cnp_Selection *sel;
sel = selections + *((int *)data);
if (data_ret) *data_ret = strdup(sel->selbuf);
if (size_ret) *size_ret = strlen(sel->selbuf);
}
else if (size)
{
if (data_ret) *data_ret = strndup(data, size - 1);
if (size_ret) *size_ret = size - 1;
}
return EINA_TRUE;
}
@ -999,11 +1006,19 @@ edje_converter(char *target __UNUSED__, void *data, int size __UNUSED__, void **
static Eina_Bool
html_converter(char *target __UNUSED__, void *data, int size __UNUSED__, void **data_ret, int *size_ret, Ecore_X_Atom *ttype __UNUSED__, int *typesize __UNUSED__)
{
Cnp_Selection *sel;
if (size == sizeof(int))
{
Cnp_Selection *sel;
sel = selections + *(int *)data;
if (data_ret) *data_ret = strdup(sel->selbuf);
if (size_ret) *size_ret = strlen(sel->selbuf);
sel = selections + *((int *)data);
if (data_ret) *data_ret = strdup(sel->selbuf);
if (size_ret) *size_ret = strlen(sel->selbuf);
}
else if (size)
{
if (data_ret) *data_ret = strndup(data, size - 1);
if (size_ret) *size_ret = size - 1;
}
return EINA_TRUE;
}
@ -1011,11 +1026,20 @@ html_converter(char *target __UNUSED__, void *data, int size __UNUSED__, void **
static Eina_Bool
uri_converter(char *target __UNUSED__, void *data, int size __UNUSED__, void **data_ret, int *size_ret, Ecore_X_Atom *ttype __UNUSED__, int *typesize __UNUSED__)
{
Cnp_Selection *sel;
sel = selections + *((int *)data);
cnp_debug("Uri converter\n");
if (data_ret) *data_ret = strdup(sel->selbuf);
if (size_ret) *size_ret = strlen(sel->selbuf);
if (size == sizeof(int))
{
Cnp_Selection *sel;
sel = selections + *((int *)data);
if (data_ret) *data_ret = strdup(sel->selbuf);
if (size_ret) *size_ret = strlen(sel->selbuf);
}
else if (size)
{
if (data_ret) *data_ret = strndup(data, size - 1);
if (size_ret) *size_ret = size - 1;
}
return EINA_TRUE;
}