From: Ethan B. <ebl...@us...> - 2004-05-04 06:08:55
|
Update of /cvsroot/gaim/gaim/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5376/src Modified Files: gtkimhtml.c Log Message: Copy/paste fixes for UCS-2 encoded selections Index: gtkimhtml.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkimhtml.c,v retrieving revision 1.322 retrieving revision 1.323 diff -u -d -p -r1.322 -r1.323 --- gtkimhtml.c 2 May 2004 18:12:07 -0000 1.322 +++ gtkimhtml.c 4 May 2004 06:08:47 -0000 1.323 @@ -689,7 +689,6 @@ static void cut_clipboard_cb(GtkIMHtml * static void paste_received_cb (GtkClipboard *clipboard, GtkSelectionData *selection_data, gpointer data) { char *text; - guint16 c; GtkIMHtml *imhtml = data; GtkTextIter iter; GtkIMHtmlOptions flags = GTK_IMHTML_NO_NEWLINE; @@ -761,14 +760,14 @@ static void paste_received_cb (GtkClipbo memcpy(text, selection_data->data, selection_data->length); } - memcpy (&c, text, 2); - if (c == 0xfeff) { - /* This is UCS2 */ - char *utf8 = g_convert(text+2, selection_data->length - 2, "UTF-8", "UCS-2", NULL, NULL, NULL); + if (selection_data->length >= 2 && + (*(guint16 *)text == 0xfeff || *(guint16 *)text == 0xfffe)) { + /* This is UCS-2 */ + char *utf8 = g_convert(text, selection_data->length, "UTF-8", "UCS-2", NULL, NULL, NULL); g_free(text); text = utf8; if (!text) { - gaim_debug_warning("gtkimhtml", "g_convert failed in paste_received_cb\n"); + gaim_debug_warning("gtkimhtml", "g_convert from UCS-2 failed in paste_received_cb\n"); return; } } |