(report-emacs-bug "glyphs for chars 128--159") email -s 'glyphs for chars 128..159' edrx@mat.puc-rio.br email -s 'glyphs for chars 128..159' bug-gnu-emacs@gnu.org <<'%%%%' In GNU Emacs 20.3.2 (i386-debian-linux-gnu, X toolkit) of Thu Jan 28 1999 on raven configured using `configure i386-debian-linux-gnu --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/lib --localstatedir=/var/lib --infodir=/usr/info --with-pop=yes --with-x=yes --with-x-toolkit=yes'... Emacs20 enters an endless loop if it tries to display characters of the range 128..159 as glyphs (in non-X mode). Here's a way to trigger the bug: enter emacs; I did it by running /usr/bin/emacs20 --no-windows --unibyte --no-init-file glyphbug then execute these two sexprs with C-x C-e: (insert (format "%c-A-%c-B-%c" 128 129 130)) (standard-display-8bit 128 159) The second one may be replaced by, say, (aset standard-display-table 128 (vector (create-glyph "\e[1;33;41m!\e[m"))) which is on a lower level and still breaks. (This one on a Linux text console would make char 128 display as a bright yellow "!" on red background). Note: Emacs19 (19.34.1) doesn't have any problem in running this code, and Emacs20 also runs ok with chars outside of the range 128..159, i.e., in the ranges 0..127 and 160..255: (insert (format "%c-%c-%c-%c-%c" 0 27 160 254 255)) (standard-display-8bit 160 255) (aset standard-display-table 0 (vector (create-glyph "\e[34m*\e[m"))) (aset standard-display-table 27 (vector (create-glyph "\e[1;30;42m[\e[m"))) (aset standard-display-table 160 (vector (create-glyph "\e[31m6\e[m"))) (aset standard-display-table 254 (vector (create-glyph "\e[1;31m\xFE\e[m"))) (aset standard-display-table 255 (vector (create-glyph "\e[45m?\e[m"))) More notes: I'm using a standard Intel Debian 2.1 ("Slink") system; TERM is set to "linux"; Emacs20 need a series of two "C-g"s to abort (the first one does nothing visible); then it suspends (!!!) and when restarted it asks "Auto-save? (y or n)" and then "Abort (and dump core)? (y or n)". Even more notes: by using gdb to stop emacs20 after it starts to loop I was convinced that the loop involves at least the functions write_glyphs and encode_terminal_code (in term.c) and encode_coding and encode_coding_iso2022 (in coding.c). However I haven't been able to figure out very well what they're doing, what they should do and what is looping; please don't flame me too heavily if this is a false start. [], Eduardo Ochs edrx@inx.com.br edrx@mat.puc-rio.br %%%%