# HG changeset patch # User Eli Zaretskii # Date 1023298582 0 # Node ID bd5e72f0cf8ee283af2ea274521aefd6cd7bdd7f # Parent e4adbf26467d30413f5f33ca795804cd36aba338 (lisp_data_to_selection_data): If the requested type is STRING, call string_make_unibyte to encode the selected text as a string. diff -r e4adbf26467d -r bd5e72f0cf8e src/xselect.c --- a/src/xselect.c Wed Jun 05 17:14:16 2002 +0000 +++ b/src/xselect.c Wed Jun 05 17:36:22 2002 +0000 @@ -1757,14 +1757,32 @@ /* Since we are now handling multilingual text, we must consider sending back compound text. */ int stringp; + extern Lisp_Object Qcompound_text; if (NILP (Vnext_selection_coding_system)) Vnext_selection_coding_system = Vselection_coding_system; *format_ret = 8; - *data_ret = x_encode_text (obj, Vnext_selection_coding_system, 1, - (int *) size_ret, &stringp); - *nofree_ret = (*data_ret == XSTRING (obj)->data); + /* If the requested type is STRING, we must encode the selected + text as a string, even if the coding system set by the user + is ctext or its derivatives. */ + if (EQ (type, QSTRING) + && (EQ (Vnext_selection_coding_system, Qcompound_text) + || EQ (Vnext_selection_coding_system, + Qcompound_text_with_extensions))) + { + Lisp_Object unibyte_string; + + unibyte_string = string_make_unibyte (obj); + *data_ret = XSTRING (unibyte_string)->data; + *nofree_ret = 1; + } + else + { + *data_ret = x_encode_text (obj, Vnext_selection_coding_system, 1, + (int *) size_ret, &stringp); + *nofree_ret = (*data_ret == XSTRING (obj)->data); + } if (NILP (type)) type = (stringp ? QSTRING : QCOMPOUND_TEXT); Vlast_coding_system_used = (*nofree_ret