Package: xterm Version: 4.3.0.dfsg.1-12.0.1 Severity: important Tags: patch
Xterm has some colorization problems which are pop-up for example if you read your eMail in mutt in a screen. The problem is: From: Thomas Dickey <[EMAIL PROTECTED]> To: Thomas Glanzmann <[EMAIL PROTECTED]> Subject: Re: Color problems with xterm-201 Date: Sun, 1 May 2005 15:31:09 -0400 I found the problem (took about an hour). It was when xterm was writing out pending data, updated the display's colors and didn't restore. That happened to be in one of those rarely-needed checks - it had some data leftover telling it to scroll just as it started writing new data. This fragment in charproc.c: if (!AddToRefresh(screen)) { /* make sure that the correct GC is current */ currentGC = updatedXtermGC(screen, flags, fg_bg, False); if (screen->scroll_amt) FlushScroll(screen); doesn't account for that one of the functions called by FlushScroll() could modify the display's colors as is done in updatedXtermGC(). What's odd is that the code is very old - and no one reported it before. I see the updatedXtermGC() call from 1996. (On the other hand, I've encountered bugs that old more than once). Anyway, the fix for that is to move the assignment past the if statement: if (!AddToRefresh(screen)) { if (screen->scroll_amt) FlushScroll(screen); /* make sure that the correct GC is current */ currentGC = updatedXtermGC(screen, flags, fg_bg, False); I'll check for other occurrences, of course. The attached patch fixes the described problem. Please apply and recompile. --- xterm-201/charproc.c~redraw +++ xterm-201/charproc.c @@ -3435,12 +3435,13 @@ InsertChar(screen, cells); } if (!AddToRefresh(screen)) { - /* make sure that the correct GC is current */ - currentGC = updatedXtermGC(screen, flags, fg_bg, False); if (screen->scroll_amt) FlushScroll(screen); + /* make sure that the correct GC is current */ + currentGC = updatedXtermGC(screen, flags, fg_bg, False); + if (flags & INVISIBLE) { if (cells > len) { str = temp_str = malloc(cells); -- System Information: Debian Release: 3.1 APT prefers testing APT policy: (1050, 'testing'), (500, 'testing') Architecture: i386 (i686) Kernel: Linux 2.4.30 Locale: LANG=C, [EMAIL PROTECTED] (charmap=ISO-8859-15) Versions of packages xterm depends on: ii libc6 2.3.2.ds1-21 GNU C Library: Shared libraries an ii libexpat1 1.95.8-1 XML parsing C library - runtime li ii libfontconfig1 2.3.1-2 generic font configuration library ii libfreetype6 2.1.7-2.4 FreeType 2 font engine, shared lib ii libice6 4.3.0.dfsg.1-12.0.1 Inter-Client Exchange library ii libncurses5 5.4-4 Shared libraries for terminal hand ii libsm6 4.3.0.dfsg.1-12.0.1 X Window System Session Management ii libxaw7 4.3.0.dfsg.1-12.0.1 X Athena widget set library ii libxext6 4.3.0.dfsg.1-12.0.1 X Window System miscellaneous exte ii libxft2 2.1.7-1 FreeType-based font drawing librar ii libxmu6 4.3.0.dfsg.1-12.0.1 X Window System miscellaneous util ii libxpm4 4.3.0.dfsg.1-12.0.1 X pixmap library ii libxrender1 0.8.3-7 X Rendering Extension client libra ii libxt6 4.3.0.dfsg.1-12.0.1 X Toolkit Intrinsics ii xlibs 4.3.0.dfsg.1-12 X Keyboard Extension (XKB) configu ii xlibs-data 4.3.0.dfsg.1-12 X Window System client data -- debconf-show failed -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]