[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xterm: Changes to 'debian-unstable'



 MANIFEST         |    2 
 Tekproc.c        |    6 
 aclocal.m4       |   42 -
 button.c         |   29 
 cachedGCs.c      |    6 
 charproc.c       |   30 
 configure        | 1836 ++++++++++++++++++++++++++++---------------------------
 configure.in     |    5 
 debian/changelog |   11 
 fontutils.c      |   17 
 main.c           |   32 
 ptydata.c        |   17 
 ptyx.h           |    6 
 scrollbar.c      |   11 
 sinstall.sh      |   15 
 tabs.c           |   10 
 util.c           |   31 
 version.h        |    4 
 xterm.log.html   |   56 +
 xterm.man        |    4 
 xtermcfg.hin     |    6 
 21 files changed, 1219 insertions(+), 957 deletions(-)

New commits:
commit a78d8f48302bc92cfdd06f4c46206ef8aa198768
Author: Julien Cristau <jcristau@debian.org>
Date:   Wed Mar 19 02:18:20 2008 +0100

    New upstream release.
    
    + fix a case where an incorrect font was freed during initialization
      (closes: #471332)
    + improve resize computation for situations where the negotiation fails, by
      invoking the xterm widget's core-class resize method (closes: #365602)

diff --git a/debian/changelog b/debian/changelog
index 1cd1f7d..0059b55 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+xterm (234-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+    + fix a case where an incorrect font was freed during initialization
+      (closes: #471332)
+    + improve resize computation for situations where the negotiation fails,
+      by invoking the xterm widget's core-class resize method
+      (closes: #365602)
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 19 Mar 2008 01:15:36 +0100
+
 xterm (232-1) unstable; urgency=low
 
   * New upstream release.

commit 455745d8707740c4e09505de734c5d73d7620b3c
Author: Julien Cristau <jcristau@debian.org>
Date:   Wed Mar 19 01:13:12 2008 +0100

    Import xterm 234.

diff --git a/charproc.c b/charproc.c
index c973756..54d6dca 100644
--- a/charproc.c
+++ b/charproc.c
@@ -1,4 +1,4 @@
-/* $XTermId: charproc.c,v 1.835 2008/02/21 20:21:33 tom Exp $ */
+/* $XTermId: charproc.c,v 1.836 2008/02/29 01:55:13 tom Exp $ */
 
 /*
 
@@ -5941,6 +5941,19 @@ releaseWindowGCs(XtermWidget xw, VTwin * win)
 	    name = 0; \
 	}
 
+#ifdef NO_LEAKS
+#if OPT_RENDERFONT
+static void
+xtermCloseXft(TScreen * screen, XftFont ** pub)
+{
+    if (*pub != 0) {
+	XftFontClose(screen->display, *pub);
+	*pub = 0;
+    }
+}
+#endif
+#endif
+
 static void
 VTDestroy(Widget w GCC_UNUSED)
 {
@@ -5986,6 +5999,17 @@ VTDestroy(Widget w GCC_UNUSED)
     xtermCloseFonts(xw, screen->fnts);
     noleaks_cachedCgs(xw);
 
+#if OPT_RENDERFONT
+    for (n = 0; n < NMENUFONTS; ++n) {
+	xtermCloseXft(screen, &(screen->renderFontNorm[n]));
+	xtermCloseXft(screen, &(screen->renderFontBold[n]));
+	xtermCloseXft(screen, &(screen->renderFontItal[n]));
+	xtermCloseXft(screen, &(screen->renderWideNorm[n]));
+	xtermCloseXft(screen, &(screen->renderWideBold[n]));
+	xtermCloseXft(screen, &(screen->renderWideItal[n]));
+    }
+#endif
+
 #if 0				/* some strings may be owned by X libraries */
     for (n = 0; n <= fontMenu_lastBuiltin; ++n) {
 	int k;
diff --git a/fontutils.c b/fontutils.c
index f782523..d66933b 100644
--- a/fontutils.c
+++ b/fontutils.c
@@ -1,4 +1,4 @@
-/* $XTermId: fontutils.c,v 1.269 2008/02/21 20:21:15 tom Exp $ */
+/* $XTermId: fontutils.c,v 1.270 2008/02/29 00:25:16 Andrea.Odetti Exp $ */
 
 /************************************************************
 
@@ -699,6 +699,9 @@ xtermOpenFont(XtermWidget xw, char *name, XTermFonts * result)
     return code;
 }
 
+/*
+ * Close the font and Free the font info
+ */
 XTermFonts *
 xtermCloseFont(XtermWidget xw, XTermFonts * fnt)
 {
@@ -712,18 +715,6 @@ xtermCloseFont(XtermWidget xw, XTermFonts * fnt)
     return 0;
 }
 
-static XTermFonts *
-xtermCloseFont2(XtermWidget xw, XTermFonts * fnt)
-{
-    if (fnt != 0 && fnt->fs != 0) {
-	TScreen *screen = TScreenOf(xw);
-
-	clrCgsFonts(xw, WhichVWin(screen), fnt);
-	XFreeFont(screen->display, fnt->fs);
-    }
-    return 0;
-}
-
 /*
  * Close the listed fonts, noting that some may use copies of the pointer.
  */
@@ -733,13 +724,16 @@ xtermCloseFonts(XtermWidget xw, XTermFonts * fnts)
     int j, k;
 
     for (j = 0; j < fMAX; ++j) {
-	if (fnts[j].fs != 0) {
-	    xtermCloseFont2(xw, &fnts[j]);
+	/*
+	 * Need to save the pointer since xtermCloseFont zeroes it
+	 */
+	XFontStruct *thisFont = fnts[j].fs;
+	if (thisFont != 0) {
+	    xtermCloseFont(xw, &fnts[j]);
 	    for (k = j + 1; k < fMAX; ++k) {
-		if (fnts[j].fs == fnts[k].fs)
+		if (thisFont == fnts[k].fs)
 		    xtermFreeFontInfo(&fnts[k]);
 	    }
-	    xtermFreeFontInfo(&fnts[j]);
 	}
     }
 }
diff --git a/main.c b/main.c
index bbf8f19..f9019d1 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,4 @@
-/* $XTermId: main.c,v 1.585 2008/02/24 21:49:36 tom Exp $ */
+/* $XTermId: main.c,v 1.586 2008/02/28 00:28:00 Matthieu.Herrb Exp $ */
 
 /*
  *				 W A R N I N G
@@ -1873,10 +1873,6 @@ main(int argc, char *argv[]ENVP_ARG)
 #ifndef USE_TERMIOS		/* { */
     d_tio.c_line = 0;
 #endif /* } */
-#if defined(USE_TERMIOS) || defined(USE_POSIX_TERMIOS)	/* { */
-    d_tio.c_cc[VMIN] = 1;
-    d_tio.c_cc[VTIME] = 0;
-#endif /* } */
 #ifdef HAS_LTCHARS		/* { */
     d_ltc.t_suspc = CSUSP;	/* t_suspc */
     d_ltc.t_dsuspc = CDSUSP;	/* t_dsuspc */
@@ -1939,6 +1935,10 @@ main(int argc, char *argv[]ENVP_ARG)
 	    }
 	}
     }
+#if defined(USE_TERMIOS) || defined(USE_POSIX_TERMIOS)	/* { */
+    d_tio.c_cc[VMIN] = 1;
+    d_tio.c_cc[VTIME] = 0;
+#endif /* } */
 #ifdef HAS_LTCHARS		/* { */
     d_ltc.t_suspc = CharOf('\000');	/* t_suspc */
     d_ltc.t_dsuspc = CharOf('\000');	/* t_dsuspc */
diff --git a/scrollbar.c b/scrollbar.c
index 2ab68cf..c82da89 100644
--- a/scrollbar.c
+++ b/scrollbar.c
@@ -1,9 +1,9 @@
-/* $XTermId: scrollbar.c,v 1.132 2007/02/11 14:49:56 tom Exp $ */
+/* $XTermId: scrollbar.c,v 1.134 2008/02/28 01:07:30 tom Exp $ */
 
 /* $XFree86: xc/programs/xterm/scrollbar.c,v 3.48 2006/02/13 01:14:59 dickey Exp $ */
 
 /*
- * Copyright 2000-2006,2007 by Thomas E. Dickey
+ * Copyright 2000-2007,2008 by Thomas E. Dickey
  *
  *                         All Rights Reserved
  *
@@ -192,6 +192,13 @@ DoResizeScreen(XtermWidget xw)
 	geomreqresult = XtMakeResizeRequest((Widget) xw, repWidth,
 					    repHeight, NULL, NULL);
     }
+
+    if (geomreqresult != XtGeometryYes) {
+	/* The resize wasn't successful, so we might need to adjust
+	   our idea of how large the screen is. */
+	TRACE(("...still no (%d) - resize the core-class\n", geomreqresult));
+	xw->core.widget_class->core_class.resize((Widget) xw);
+    }
 #if 1				/* ndef nothack */
     /*
      * XtMakeResizeRequest() has the undesirable side-effect of clearing
diff --git a/sinstall.sh b/sinstall.sh
index bd410cf..c88a226 100755
--- a/sinstall.sh
+++ b/sinstall.sh
@@ -1,6 +1,5 @@
 #!/bin/sh
-# $XTermId: sinstall.sh,v 1.15 2006/01/04 02:10:27 tom Exp $
-# $XFree86: xc/programs/xterm/sinstall.sh,v 1.5 2006/01/04 02:10:27 dickey Exp $
+# $XTermId: sinstall.sh,v 1.16 2008/03/02 23:35:02 tom Exp $
 #
 # Install program setuid if the installer is running as root, and if xterm is
 # already installed on the system with setuid privilege.  This is a safeguard
@@ -20,6 +19,13 @@
 trace=:
 trace=echo
 
+# override locale...
+# (otherwise GNU ls displays date column in a locale-dependent manner).
+LANG=C;		export LANG
+LANGUAGE=C;	export LANGUAGE
+LC_ALL=C;	export LC_ALL
+LC_CTYPE=C;	export LC_CTYPE
+
 OPTS_SUID=
 OPTS_SGID=
 OPTS_MODE=
@@ -79,11 +85,13 @@ elif test -f "$REF_PROG" ; then
 
 	# Expect listing to have fields like this:
 	#-r--r--r--   1 user      group       34293 Jul 18 16:29 pathname
+	ls $cf_option $REF_PROG
 	ls $cf_option $REF_PROG >$MYTEMP
 	read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <$MYTEMP
 	$trace "... if \"$cf_rest\" is null, try the ls -g option"
 	if test -z "$cf_rest" ; then
 		cf_option="$cf_option -g"
+		ls $cf_option $REF_PROG
 		ls $cf_option $REF_PROG >$MYTEMP
 		read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <$MYTEMP
 	fi
@@ -105,14 +113,17 @@ elif test -f "$REF_PROG" ; then
 	$trace "... see if mode \"$cf_mode\" has s-bit set"
 	case ".$cf_mode" in #(vi
 	.???s??s*) #(vi
+		$trace "... both setuid/setgid"
 		PROG_SUID=4000
 		PROG_SGID=2000
 		;;
 	.???s*) #(vi
+		$trace "... setuid"
 		PROG_SUID=4000
 		PROG_GRP=
 		;;
 	.??????s*)
+		$trace "... setgid"
 		PROG_SGID=2000
 		PROG_USR=
 		;;
diff --git a/version.h b/version.h
index efdf2ba..c1ad944 100644
--- a/version.h
+++ b/version.h
@@ -1,4 +1,4 @@
-/* $XTermId: version.h,v 1.289 2008/02/20 20:32:21 tom Exp $ */
+/* $XTermId: version.h,v 1.290 2008/02/28 00:17:03 tom Exp $ */
 
 /*
  * These definitions are used to build the string that's printed in response to
@@ -6,7 +6,7 @@
  * version of X to which this version of xterm has been built.  The number in
  * parentheses is my patch number (Thomas E. Dickey).
  */
-#define XTERM_PATCH   233
+#define XTERM_PATCH   234
 
 #ifndef __vendorversion__
 #define __vendorversion__ "XTerm"
diff --git a/xterm.log.html b/xterm.log.html
index 301ed20..0e10ac1 100644
--- a/xterm.log.html
+++ b/xterm.log.html
@@ -20,7 +20,7 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   *
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.            *
  *****************************************************************************
-  $XTermId: xterm.log.html,v 1.659 2008/02/24 23:46:20 tom Exp $
+  $XTermId: xterm.log.html,v 1.664 2008/03/02 23:32:51 tom Exp $
   -->
 <HTML>
 <HEAD>
@@ -45,6 +45,7 @@ Most of these are summarized in the XFree86 CHANGELOG
 is the latest version of this file.
 
 <UL>
+<LI><A HREF="#xterm_234">Patch #234 - 2008-03/02</A>
 <LI><A HREF="#xterm_233">Patch #233 - 2008/02/24</A>
 <LI><A HREF="#xterm_232">Patch #232 - 2008/01/30</A>
 <LI><A HREF="#xterm_231">Patch #231 - 2008/01/05</A>
@@ -281,6 +282,24 @@ is the latest version of this file.
 <LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
 </UL>
 
+<H1><A NAME="xterm_234">Patch #234 - 2008-03/02</A></H1>
+<ul>
+	<li>modify <code>sinstall.sh</code> to use POSIX locale to 
+	    bypass GNU ls changes to date-format.
+
+	<li>improved/refined changes for closing bitmap font (patch by
+	    Andrea Odetti).
+
+	<li>improve resize computation for situations where the negotiation
+	    fails, by invoking the xterm widget's core-class resize method
+	    (Debian #365602, patch by Jim Paris).
+
+	<li>restore initialization of terminal's <code>VMIN</code> and
+	    <code>VTIME</code> settings,
+	    from <a href="#xterm_232">patch #232</a> changes
+	    (patch by Matthieu Herrb).
+</ul>
+
 <H1><A NAME="xterm_233">Patch #233 - 2008/02/24</A></H1>
 <ul>
 	<li>add configure check for <code>ttydefaults.h</code>, include if

commit ffef6ed7e6f7f219fb347566b4e40cae4e5fd41d
Author: Julien Cristau <jcristau@debian.org>
Date:   Wed Mar 19 01:08:42 2008 +0100

    Import xterm 233.

diff --git a/MANIFEST b/MANIFEST
index 6e491e5..1351cab 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm-231, version xterm-231
+MANIFEST for xterm-233, version xterm-233
 --------------------------------------------------------------------------------
 MANIFEST                        this file
 256colres.h                     resource-definitions for 256-color mode
diff --git a/Tekproc.c b/Tekproc.c
index 8b1b89a..ffdbc5e 100644
--- a/Tekproc.c
+++ b/Tekproc.c
@@ -1,4 +1,4 @@
-/* $XTermId: Tekproc.c,v 1.158 2008/01/26 01:21:10 tom Exp $ */
+/* $XTermId: Tekproc.c,v 1.159 2008/02/21 20:21:51 tom Exp $ */
 
 /*
  * Warning, there be crufty dragons here.
@@ -718,8 +718,8 @@ Tekparse(TekWidget tw)
 	    if (screen->wide_chars
 		&& (ch > 255)) {
 		XChar2b sbuf;
-		sbuf.byte2 = CharOf(ch);
-		sbuf.byte1 = CharOf(ch >> 8);
+		sbuf.byte2 = LO_BYTE(ch);
+		sbuf.byte1 = HI_BYTE(ch);
 		XDrawImageString16(XtDisplay(tw),
 				   TWindow(tekscr),
 				   tekscr->TnormalGC,
diff --git a/aclocal.m4 b/aclocal.m4
index a3a791c..7bee0f2 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,10 +1,10 @@
-dnl $XTermId: aclocal.m4,v 1.245 2007/06/27 22:13:37 tom Exp $
+dnl $XTermId: aclocal.m4,v 1.247 2008/02/24 19:30:23 tom Exp $
 dnl
 dnl $XFree86: xc/programs/xterm/aclocal.m4,v 3.65 2006/06/19 00:36:50 dickey Exp $
 dnl
 dnl ---------------------------------------------------------------------------
 dnl
-dnl Copyright 1997-2006,2007 by Thomas E. Dickey
+dnl Copyright 1997-2007,2008 by Thomas E. Dickey
 dnl
 dnl                         All Rights Reserved
 dnl
@@ -546,7 +546,7 @@ else
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_GCC_ATTRIBUTES version: 10 updated: 2005/05/28 13:16:28
+dnl CF_GCC_ATTRIBUTES version: 11 updated: 2007/07/29 09:55:12
 dnl -----------------
 dnl Test for availability of useful gcc __attribute__ directives to quiet
 dnl compiler warnings.  Though useful, not all are supported -- and contrary
@@ -573,7 +573,7 @@ if test "$GCC" = yes
 then
 	AC_CHECKING([for $CC __attribute__ directives])
 cat > conftest.$ac_ext <<EOF
-#line __oline__ "configure"
+#line __oline__ "${as_me-configure}"
 #include "confdefs.h"
 #include "conftest.h"
 #include "conftest.i"
@@ -635,7 +635,7 @@ if test "$GCC" = yes ; then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_GCC_WARNINGS version: 21 updated: 2007/06/27 18:12:15
+dnl CF_GCC_WARNINGS version: 22 updated: 2007/07/29 09:55:12
 dnl ---------------
 dnl Check if the compiler supports useful warning options.  There's a few that
 dnl we don't use, simply because they're too noisy:
@@ -660,7 +660,7 @@ AC_REQUIRE([CF_GCC_VERSION])
 CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
 
 cat > conftest.$ac_ext <<EOF
-#line __oline__ "configure"
+#line __oline__ "${as_me-configure}"
 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
 EOF
 
@@ -1033,12 +1033,12 @@ AC_TRY_COMPILE([
 test $cf_cv_path_lastlog != no && AC_DEFINE(USE_LASTLOG)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_MSG_LOG version: 3 updated: 1997/09/07 14:05:52
+dnl CF_MSG_LOG version: 4 updated: 2007/07/29 09:55:12
 dnl ----------
 dnl Write a debug message to config.log, along with the line number in the
 dnl configure script.
 AC_DEFUN([CF_MSG_LOG],[
-echo "(line __oline__) testing $* ..." 1>&AC_FD_CC
+echo "${as_me-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl CF_PATH_PROG version: 6 updated: 2004/01/26 20:58:41
@@ -1875,7 +1875,7 @@ if test "$cf_cv_have_utempter" = yes ; then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_UTMP version: 8 updated: 2002/10/27 23:21:42
+dnl CF_UTMP version: 9 updated: 2008/01/25 17:18:00
 dnl -------
 dnl Check for UTMP/UTMPX headers
 AC_DEFUN([CF_UTMP],
@@ -1914,6 +1914,7 @@ if test $cf_cv_have_utmp != no ; then
 	AC_DEFINE(HAVE_UTMP)
 	test $cf_cv_have_utmp = utmpx && AC_DEFINE(UTMPX_FOR_UTMP)
 	CF_UTMP_UT_HOST
+	CF_UTMP_UT_SYSLEN
 	CF_UTMP_UT_NAME
 	CF_UTMP_UT_XSTATUS
 	CF_UTMP_UT_XTIME
@@ -2047,6 +2048,26 @@ fi
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl CF_UTMP_UT_SYSLEN version: 1 updated: 2008/01/25 17:18:00
+dnl -----------------
+dnl Check if UTMP/UTMPX struct defines ut_syslen member
+AC_DEFUN([CF_UTMP_UT_SYSLEN],
+[
+if test $cf_cv_have_utmp != no ; then
+AC_MSG_CHECKING(if ${cf_cv_have_utmp}.ut_syslen is declared)
+AC_CACHE_VAL(cf_cv_have_utmp_ut_syslen,[
+	AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <${cf_cv_have_utmp}.h>],
+	[struct $cf_cv_have_utmp x; int y = x.ut_syslen],
+	[cf_cv_have_utmp_ut_syslen=yes],
+	[cf_cv_have_utmp_ut_syslen=no])
+	])
+AC_MSG_RESULT($cf_cv_have_utmp_ut_syslen)
+test $cf_cv_have_utmp_ut_syslen != no && AC_DEFINE(HAVE_UTMP_UT_SYSLEN)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_UTMP_UT_XSTATUS version: 3 updated: 2001/12/27 12:55:07
 dnl ------------------
 dnl Check for known variants on the UTMP/UTMPX struct's exit-status as reported
@@ -2114,11 +2135,12 @@ fi
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_VERBOSE version: 2 updated: 1997/09/05 10:45:14
+dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
 dnl ----------
 dnl Use AC_VERBOSE w/o the warnings
 AC_DEFUN([CF_VERBOSE],
 [test -n "$verbose" && echo "	$1" 1>&AC_FD_MSG
+CF_MSG_LOG([$1])
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl CF_WITH_IMAKE_CFLAGS version: 8 updated: 2005/11/02 15:04:41
diff --git a/button.c b/button.c
index 3e63306..66ea199 100644
--- a/button.c
+++ b/button.c
@@ -1,7 +1,7 @@
-/* $XTermId: button.c,v 1.283 2008/01/07 22:56:37 tom Exp $ */
+/* $XTermId: button.c,v 1.285 2008/02/24 19:42:02 tom Exp $ */
 
 /*
- * Copyright 1999-2006,2007 by Thomas E. Dickey
+ * Copyright 1999-2007,2008 by Thomas E. Dickey
  *
  *                         All Rights Reserved
  *
@@ -1722,12 +1722,17 @@ HandleInsertSelection(Widget w,
 }
 
 static SelectUnit
-EvalSelectUnit(TScreen * screen, Time buttonDownTime, SelectUnit defaultUnit)
+EvalSelectUnit(TScreen * screen,
+	       Time buttonDownTime,
+	       SelectUnit defaultUnit,
+	       unsigned int button)
 {
     SelectUnit result;
     int delta;
 
-    if (screen->lastButtonUpTime == (Time) 0) {
+    if (button != screen->lastButton) {
+	delta = term->screen.multiClickTime + 1;
+    } else if (screen->lastButtonUpTime == (Time) 0) {
 	/* first time and once in a blue moon */
 	delta = screen->multiClickTime + 1;
     } else if (buttonDownTime > screen->lastButtonUpTime) {
@@ -1758,7 +1763,10 @@ do_select_start(XtermWidget xw,
 
     if (SendMousePosition(xw, event))
 	return;
-    screen->selectUnit = EvalSelectUnit(screen, event->xbutton.time, Select_CHAR);
+    screen->selectUnit = EvalSelectUnit(screen,
+					event->xbutton.time,
+					Select_CHAR,
+					event->xbutton.button);
     screen->replyToEmacs = False;
 
 #if OPT_READLINE
@@ -1812,7 +1820,10 @@ TrackDown(XtermWidget xw, XButtonEvent * event)
     TScreen *screen = &(xw->screen);
     CELL cell;
 
-    screen->selectUnit = EvalSelectUnit(screen, event->time, Select_CHAR);
+    screen->selectUnit = EvalSelectUnit(screen,
+					event->time,
+					Select_CHAR,
+					event->button);
     if (screen->numberOfClicks > 1) {
 	PointToCELL(screen, event->y, event->x, &cell);
 	screen->replyToEmacs = True;
@@ -1898,6 +1909,7 @@ EndExtend(XtermWidget xw,
     }
     ExtendExtend(xw, &cell);
     screen->lastButtonUpTime = event->xbutton.time;
+    screen->lastButton = event->xbutton.button;
     if (!isSameCELL(&(screen->startSel), &(screen->endSel))) {
 	if (screen->replyToEmacs) {
 	    count = 0;
@@ -1987,7 +1999,10 @@ do_start_extend(XtermWidget xw,
 	|| event->xbutton.button != Button3
 	|| !(SCREEN_FLAG(screen, dclick3_deletes)))
 #endif
-	screen->selectUnit = EvalSelectUnit(screen, event->xbutton.time, screen->selectUnit);
+	screen->selectUnit = EvalSelectUnit(screen,
+					    event->xbutton.time,
+					    screen->selectUnit,
+					    event->xbutton.button);
     screen->replyToEmacs = False;
 
 #if OPT_READLINE
diff --git a/cachedGCs.c b/cachedGCs.c
index 93913a3..a72ef3f 100644
--- a/cachedGCs.c
+++ b/cachedGCs.c
@@ -1,4 +1,4 @@
-/* $XTermId: cachedGCs.c,v 1.47 2008/01/30 00:56:13 tom Exp $ */
+/* $XTermId: cachedGCs.c,v 1.48 2008/02/20 20:54:54 Julien.Cristau Exp $ */
 
 /************************************************************
 
@@ -404,8 +404,8 @@ SameFont(XTermFonts * a, XTermFonts * b)
 {
     return (HaveFont(a)
 	    && HaveFont(b)
-	    && (a->fs == b->fs)
-	    && !memcmp(a->fs, b->fs, sizeof(*(a->fs))));
+	    && ((a->fs == b->fs)
+		|| !memcmp(a->fs, b->fs, sizeof(*(a->fs)))));
 }
 
 #define SameColor(a,b) ((a) == (b))
diff --git a/charproc.c b/charproc.c
index 1b47ae6..c973756 100644
--- a/charproc.c
+++ b/charproc.c
@@ -1,4 +1,4 @@
-/* $XTermId: charproc.c,v 1.834 2008/01/27 17:39:53 tom Exp $ */
+/* $XTermId: charproc.c,v 1.835 2008/02/21 20:21:33 tom Exp $ */
 
 /*
 
@@ -3461,9 +3461,9 @@ dotext(XtermWidget xw,
 	    for (j = offset, k = 0; j < offset + chars_chomped; j++) {
 		if (buf[j] == HIDDEN_CHAR)
 		    continue;
-		lobyte[k] = buf[j];
+		lobyte[k] = LO_BYTE(buf[j]);
 		if (buf[j] > 255) {
-		    hibyte[k] = (buf[j] >> 8);
+		    hibyte[k] = HI_BYTE(buf[j]);
 		    both = True;
 		} else {
 		    hibyte[k] = 0;
diff --git a/configure b/configure
index 5c43852..e7f6cc5 100755
--- a/configure
+++ b/configure
@@ -3064,7 +3064,7 @@ if test "${cf_cv_posix_c_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
-echo "(line 3067) testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me-configure}:3067: testing if the symbol is already defined go no further ..." 1>&5
 
 	cat >conftest.$ac_ext <<_ACEOF
 #line 3070 "configure"
@@ -3147,12 +3147,12 @@ fi
 rm -f conftest.$ac_objext conftest.$ac_ext
 	 fi
 
-echo "(line 3150) testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me-configure}:3150: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
 
 	 CFLAGS="$cf_trim_CFLAGS"
 	 CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
 
-echo "(line 3155) testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me-configure}:3155: testing if the second compile does not leave our definition intact error ..." 1>&5
 
 	 cat >conftest.$ac_ext <<_ACEOF
 #line 3158 "configure"
@@ -3364,6 +3364,7 @@ fi
 for ac_header in \
 ncurses/term.h \
 stdlib.h \
+sys/ttydefaults.h \
 term.h \
 termios.h \
 unistd.h \
@@ -3371,23 +3372,23 @@ wchar.h \
 
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3374: checking for $ac_header" >&5
+echo "$as_me:3375: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line 3380 "configure"
+#line 3381 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:3384: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:3385: \"$ac_cpp conftest.$ac_ext\"") >&5
   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
   ac_status=$?
   egrep -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:3390: \$? = $ac_status" >&5
+  echo "$as_me:3391: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -3406,7 +3407,7 @@ else
 fi
 rm -f conftest.err conftest.$ac_ext
 fi
-echo "$as_me:3409: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:3410: result: `eval echo '${'$as_ac_Header'}'`" >&5
 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
 if test `eval echo '${'$as_ac_Header'}'` = yes; then
   cat >>confdefs.h <<EOF
@@ -3416,13 +3417,13 @@ EOF
 fi
 done
 
-echo "$as_me:3419: checking whether time.h and sys/time.h may both be included" >&5
+echo "$as_me:3420: checking whether time.h and sys/time.h may both be included" >&5
 echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
 if test "${ac_cv_header_time+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line 3425 "configure"
+#line 3426 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3438,16 +3439,16 @@ return 0;
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3441: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3442: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:3444: \$? = $ac_status" >&5
+  echo "$as_me:3445: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:3447: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3448: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3450: \$? = $ac_status" >&5
+  echo "$as_me:3451: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   ac_cv_header_time=yes
 else
@@ -3457,7 +3458,7 @@ ac_cv_header_time=no
 fi
 rm -f conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:3460: result: $ac_cv_header_time" >&5
+echo "$as_me:3461: result: $ac_cv_header_time" >&5
 echo "${ECHO_T}$ac_cv_header_time" >&6
 if test $ac_cv_header_time = yes; then
 
@@ -3467,13 +3468,13 @@ EOF
 
 fi
 
-  echo "$as_me:3470: checking for nl_langinfo and CODESET" >&5
+  echo "$as_me:3471: checking for nl_langinfo and CODESET" >&5
 echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
 if test "${am_cv_langinfo_codeset+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line 3476 "configure"
+#line 3477 "configure"
 #include "confdefs.h"
 #include <langinfo.h>
 int
@@ -3485,16 +3486,16 @@ char* cs = nl_langinfo(CODESET);
 }
 _ACEOF
 rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:3488: \"$ac_link\"") >&5
+if { (eval echo "$as_me:3489: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:3491: \$? = $ac_status" >&5
+  echo "$as_me:3492: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:3494: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3495: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3497: \$? = $ac_status" >&5
+  echo "$as_me:3498: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   am_cv_langinfo_codeset=yes
 else
@@ -3505,7 +3506,7 @@ fi
 rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
 
 fi
-echo "$as_me:3508: result: $am_cv_langinfo_codeset" >&5
+echo "$as_me:3509: result: $am_cv_langinfo_codeset" >&5
 echo "${ECHO_T}$am_cv_langinfo_codeset" >&6
   if test $am_cv_langinfo_codeset = yes; then
 
@@ -3517,7 +3518,7 @@ EOF
 
 ###	checks for typedefs
 
-echo "$as_me:3520: checking for signal global datatype" >&5
+echo "$as_me:3521: checking for signal global datatype" >&5
 echo $ECHO_N "checking for signal global datatype... $ECHO_C" >&6
 if test "${cf_cv_sig_atomic_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3529,7 +3530,7 @@ else
 		"int"
 	do
 	cat >conftest.$ac_ext <<_ACEOF
-#line 3532 "configure"
+#line 3533 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -3552,16 +3553,16 @@ signal(SIGINT, handler);
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3555: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3556: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:3558: \$? = $ac_status" >&5
+  echo "$as_me:3559: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:3561: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3562: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3564: \$? = $ac_status" >&5
+  echo "$as_me:3565: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   cf_cv_sig_atomic_t=$cf_type
 else
@@ -3575,20 +3576,20 @@ rm -f conftest.$ac_objext conftest.$ac_ext
 
 fi
 
-echo "$as_me:3578: result: $cf_cv_sig_atomic_t" >&5
+echo "$as_me:3579: result: $cf_cv_sig_atomic_t" >&5
 echo "${ECHO_T}$cf_cv_sig_atomic_t" >&6
 test "$cf_cv_sig_atomic_t" != no && cat >>confdefs.h <<EOF
 #define SIG_ATOMIC_T $cf_cv_sig_atomic_t
 EOF
 
-echo "$as_me:3584: checking for size_t in <sys/types.h> or <stdio.h>" >&5
+echo "$as_me:3585: checking for size_t in <sys/types.h> or <stdio.h>" >&5
 echo $ECHO_N "checking for size_t in <sys/types.h> or <stdio.h>... $ECHO_C" >&6
 if test "${cf_cv_type_size_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 	cat >conftest.$ac_ext <<_ACEOF
-#line 3591 "configure"
+#line 3592 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -3606,16 +3607,16 @@ size_t x
 }
 _ACEOF
 rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3609: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3610: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:3612: \$? = $ac_status" >&5
+  echo "$as_me:3613: \$? = $ac_status" >&5
   (exit $ac_status); } &&
          { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:3615: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3616: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3618: \$? = $ac_status" >&5
+  echo "$as_me:3619: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   cf_cv_type_size_t=yes
 else
@@ -3627,19 +3628,19 @@ rm -f conftest.$ac_objext conftest.$ac_ext
 
 fi
 
-echo "$as_me:3630: result: $cf_cv_type_size_t" >&5
+echo "$as_me:3631: result: $cf_cv_type_size_t" >&5
 echo "${ECHO_T}$cf_cv_type_size_t" >&6
 test $cf_cv_type_size_t = no && cat >>confdefs.h <<\EOF
 #define size_t unsigned
 EOF
 
-echo "$as_me:3636: checking for ANSI C header files" >&5
+echo "$as_me:3637: checking for ANSI C header files" >&5
 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
 if test "${ac_cv_header_stdc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line 3642 "configure"
+#line 3643 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3647,13 +3648,13 @@ else
 #include <float.h>
 
 _ACEOF
-if { (eval echo "$as_me:3650: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:3651: \"$ac_cpp conftest.$ac_ext\"") >&5
   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
   ac_status=$?
   egrep -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:3656: \$? = $ac_status" >&5
+  echo "$as_me:3657: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -3675,7 +3676,7 @@ rm -f conftest.err conftest.$ac_ext
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
   cat >conftest.$ac_ext <<_ACEOF
-#line 3678 "configure"
+#line 3679 "configure"
 #include "confdefs.h"
 #include <string.h>
 
@@ -3693,7 +3694,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
   cat >conftest.$ac_ext <<_ACEOF
-#line 3696 "configure"
+#line 3697 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 
@@ -3714,7 +3715,7 @@ if test $ac_cv_header_stdc = yes; then
   :
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line 3717 "configure"
+#line 3718 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #if ((' ' & 0x0FF) == 0x020)
@@ -3740,15 +3741,15 @@ main ()
 }
 _ACEOF
 rm -f conftest$ac_exeext
-if { (eval echo "$as_me:3743: \"$ac_link\"") >&5
+if { (eval echo "$as_me:3744: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:3746: \$? = $ac_status" >&5
+  echo "$as_me:3747: \$? = $ac_status" >&5
   (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:3748: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3749: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3751: \$? = $ac_status" >&5
+  echo "$as_me:3752: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
   :
 else
@@ -3761,7 +3762,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
 fi
 fi
-echo "$as_me:3764: result: $ac_cv_header_stdc" >&5
+echo "$as_me:3765: result: $ac_cv_header_stdc" >&5
 echo "${ECHO_T}$ac_cv_header_stdc" >&6
 if test $ac_cv_header_stdc = yes; then
 
@@ -3777,28 +3778,28 @@ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
                   inttypes.h stdint.h unistd.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3780: checking for $ac_header" >&5
+echo "$as_me:3781: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
-#line 3786 "configure"
+#line 3787 "configure"
 #include "confdefs.h"
 $ac_includes_default
 #include <$ac_header>
 _ACEOF


Reply to: