--- src/term.c +++ src/term.c 2009-11-26 14:09:38.631431310 +0100 @@ -37,6 +37,7 @@ along with GNU Emacs. If not, see #include +#include #include "lisp.h" #include "termchar.h" @@ -1650,7 +1651,7 @@ produce_glyphs (it) if (unibyte_display_via_language_environment && (it->c >= 0240)) { - it->char_to_display = unibyte_char_to_multibyte (it->c); + it->char_to_display = BYTE8_TO_CHAR (it->c); it->pixel_width = CHAR_WIDTH (it->char_to_display); it->nglyphs = it->pixel_width; if (it->glyph_row) @@ -3467,9 +3465,7 @@ init_tty (char *name, char *terminal_typ tty->type = xstrdup (terminal_type); -#ifdef subprocesses add_keyboard_wait_descriptor (fileno (tty->input)); -#endif #endif /* !DOS_NT */ @@ -3959,8 +3957,6 @@ static void delete_tty (struct terminal *terminal) { struct tty_display_info *tty; - Lisp_Object tail, frame; - int last_terminal; /* Protect against recursive calls. delete_frame in delete_terminal calls us back when it deletes our last frame. */ @@ -3972,19 +3968,6 @@ delete_tty (struct terminal *terminal) tty = terminal->display_info.tty; - last_terminal = 1; - FOR_EACH_FRAME (tail, frame) - { - struct frame *f = XFRAME (frame); - if (FRAME_LIVE_P (f) && (!FRAME_TERMCAP_P (f) || FRAME_TTY (f) != tty)) - { - last_terminal = 0; - break; - } - } - if (last_terminal) - error ("Attempt to delete the sole terminal device with live frames"); - if (tty == tty_list) tty_list = tty->next; else @@ -4025,10 +4008,8 @@ delete_tty (struct terminal *terminal) xfree (tty->old_tty); xfree (tty->Wcm); - if (tty->termcap_strings_buffer) - xfree (tty->termcap_strings_buffer); - if (tty->termcap_term_buffer) - xfree (tty->termcap_term_buffer); + xfree (tty->termcap_strings_buffer); + xfree (tty->termcap_term_buffer); bzero (tty, sizeof (struct tty_display_info)); xfree (tty);