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;

If the multibyte string is generated by an error and this is one of the places where we can detect the error, should we not keep the xassert?


        Jan D.




_______________________________________________ Emacs-devel mailing list [email protected] http://lists.gnu.org/mailman/listinfo/emacs-devel

Reply via email to