At first, I think xassert in lisp_data_to_selection_data
(xselect.c) is wrong. Here, obj is generated by a Lisp code
that may generate a multibyte string by error (as in the
current case). But, in general, an error in Lisp code
should not lead to abort. So, I propose this change. I
choose string_make_unibyte instead of string_as_unibyte to
avoid exporting Emacs' internal leading bytes.
*** xselect.c 12 Feb 2005 09:54:46 +0900 1.148
--- xselect.c 12 Feb 2005 10:39:47 +0900
***************
*** 1908,1914 ****
}
else if (STRINGP (obj))
{
! xassert (! STRING_MULTIBYTE (obj));
if (NILP (type))
type = QSTRING;
*format_ret = 8;
--- 1908,1915 ----
}
else if (STRINGP (obj))
{
! if (STRING_MULTIBYTE (obj))
! obj = string_make_unibyte (obj);
if (NILP (type))
type = QSTRING;
*format_ret = 8;