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

xterm: Changes to 'upstream-experimental'



 INSTALL                  |   23 
 Imakefile                |   32 
 MANIFEST                 |    5 
 Makefile.in              |  111 -
 aclocal.m4               |  168 +-
 button.c                 |  131 +
 charproc.c               |   71 
 configure                | 3769 +++++++++++++++++++++++++++--------------------
 configure.in             |   21 
 ctlseqs.ms               |  135 -
 ctlseqs.txt              |  366 ++--
 fontutils.c              |   43 
 input.c                  |   38 
 koi8rxterm.man           |   37 
 linedata.c               |    6 
 main.c                   |  173 +-
 menu.c                   |    7 
 minstall.in              |   28 
 misc.c                   |  309 +--
 os2main.c                | 2230 ---------------------------
 package/debian/changelog |   19 
 package/debian/rules     |    1 
 package/freebsd/Makefile |    2 
 package/xterm.spec       |    5 
 precompose.c             |    7 
 print.c                  |   21 
 proto.h                  |   62 
 ptydata.c                |   12 
 ptyx.h                   |   21 
 resize.c                 |  281 +--
 resize.man               |  167 +-
 screen.c                 |   27 
 scrollbar.c              |    6 
 trace.c                  |   28 
 trace.h                  |   14 
 util.c                   |   31 
 uxterm.man               |   35 
 version.c                |   74 
 version.h                |   18 
 wcwidth.c                |  148 +
 xstrings.c               |  117 -
 xstrings.h               |    3 
 xterm.h                  |   38 
 xterm.log.html           |  159 +
 xterm.man                |    6 
 xterm_io.h               |   88 -
 xtermcfg.hin             |    5 
 47 files changed, 4008 insertions(+), 5090 deletions(-)

New commits:
commit 71aad68bd8b0dcd1296628aa7eaa8c3309b0dddf
Author: Julien Cristau <jcristau@debian.org>
Date:   Sat Feb 23 15:53:58 2013 +0100

    Imported Upstream version 290

diff --git a/MANIFEST b/MANIFEST
index 081a37c..4491fae 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm-289, version xterm-289
+MANIFEST for xterm-290, version xterm-290
 --------------------------------------------------------------------------------
 MANIFEST                        this file
 256colres.h                     resource-definitions for 256-color mode
diff --git a/package/debian/changelog b/package/debian/changelog
index d651847..ce2a233 100644
--- a/package/debian/changelog
+++ b/package/debian/changelog
@@ -1,3 +1,9 @@
+xterm-dev (290) unstable; urgency=low
+
+  * Fix incomplete revert of #282 change.
+
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Tue, 12 Feb 2013 19:48:21 -0500
+
 xterm-dev (289) unstable; urgency=low
 
   * Miscellaneous fixes.
diff --git a/package/freebsd/Makefile b/package/freebsd/Makefile
index 81a1711..a09398b 100644
--- a/package/freebsd/Makefile
+++ b/package/freebsd/Makefile
@@ -5,7 +5,7 @@
 # and "make makesum".
 
 PORTNAME=	xterm
-PORTVERSION=	289
+PORTVERSION=	290
 CATEGORIES=	x11
 MASTER_SITES=	ftp://invisible-island.net/xterm/ \
 		CRITICAL
diff --git a/package/xterm.spec b/package/xterm.spec
index 174716b..8a845c0 100644
--- a/package/xterm.spec
+++ b/package/xterm.spec
@@ -1,7 +1,7 @@
-# $XTermId: xterm.spec,v 1.43 2013/02/03 18:59:49 tom Exp $
+# $XTermId: xterm.spec,v 1.44 2013/02/13 00:46:35 tom Exp $
 Summary: X terminal emulator (development version)
 Name: xterm-dev
-Version: 289
+Version: 290
 Release: 1
 License: X11
 Group: User Interface/X
diff --git a/ptyx.h b/ptyx.h
index d904b39..55cd8dd 100644
--- a/ptyx.h
+++ b/ptyx.h
@@ -1,4 +1,4 @@
-/* $XTermId: ptyx.h,v 1.761 2013/02/04 01:35:47 Peder.Stray Exp $ */
+/* $XTermId: ptyx.h,v 1.762 2013/02/13 00:42:21 tom Exp $ */
 
 /*
  * Copyright 1999-2012,2013 by Thomas E. Dickey
@@ -1897,7 +1897,6 @@ typedef struct {
 	 * Working variables for getLineData().
 	 */
 	size_t		lineExtra;	/* extra space for combining chars */
-	Dimension	widestLine;	/* length of longest LineData	*/
 	/*
 	 * Pointer to the current visible buffer.
 	 */
diff --git a/screen.c b/screen.c
index 1f6b27b..d3d7822 100644
--- a/screen.c
+++ b/screen.c
@@ -1,4 +1,4 @@
-/* $XTermId: screen.c,v 1.474 2013/02/03 23:19:45 tom Exp $ */
+/* $XTermId: screen.c,v 1.475 2013/02/13 00:42:30 tom Exp $ */
 
 /*
  * Copyright 1999-2012,2013 by Thomas E. Dickey
@@ -447,10 +447,6 @@ Reallocate(XtermWidget xw,
 	return 0;
     }
 
-    if (screen->widestLine < ncol)
-	screen->widestLine = (Dimension) ncol;
-    ncol = screen->widestLine;
-
     oldBufData = *sbufaddr;
 
     TRACE(("Reallocate %dx%d -> %dx%d\n", oldrow, MaxCols(screen), nrow, ncol));
@@ -550,10 +546,6 @@ ReallocateBufOffsets(XtermWidget xw,
     assert(nrow != 0);
     assert(ncol != 0);
 
-    if (screen->widestLine < ncol)
-	screen->widestLine = (Dimension) ncol;
-    ncol = screen->widestLine;
-
     oldBufData = *sbufaddr;
     oldBufHead = *sbuf;
 
diff --git a/version.h b/version.h
index 3fd95c8..bf717b6 100644
--- a/version.h
+++ b/version.h
@@ -1,4 +1,4 @@
-/* $XTermId: version.h,v 1.358 2013/02/08 09:17:27 tom Exp $ */
+/* $XTermId: version.h,v 1.359 2013/02/13 00:44:06 tom Exp $ */
 
 /*
  * Copyright 1998-2012,2013 by Thomas E. Dickey
@@ -38,8 +38,8 @@
  * version of X to which this version of xterm has been built.  The resulting
  * number in parentheses is my patch number (Thomas E. Dickey).
  */
-#define XTERM_PATCH   289
-#define XTERM_DATE    2013-02-08
+#define XTERM_PATCH   290
+#define XTERM_DATE    2013-02-12
 
 #ifndef __vendorversion__
 #define __vendorversion__ "XTerm"
diff --git a/xterm.log.html b/xterm.log.html
index f65916f..46b3387 100644
--- a/xterm.log.html
+++ b/xterm.log.html
@@ -31,7 +31,7 @@
  * sale, use or other dealings in this Software without prior written        *
  * authorization.                                                            *
  *****************************************************************************
-  $XTermId: xterm.log.html,v 1.1315 2013/02/08 09:16:13 tom Exp $
+  $XTermId: xterm.log.html,v 1.1317 2013/02/13 01:58:03 tom Exp $
   -->
 
 <html>
@@ -70,6 +70,8 @@
   the latest version of this file.</p>
 
   <ul>
+    <li><a href="#xterm_290">Patch #290 - 2013/02/12</a></li>
+
     <li><a href="#xterm_289">Patch #289 - 2013/02/08</a></li>
 
     <li><a href="#xterm_288">Patch #288 - 2013/01/09</a></li>
@@ -861,11 +863,21 @@
     <li><a href="#xterm_01">Patch #1 - 1996/1/6</a></li>
   </ul>
 
+  <h1><a name="xterm_290" id="xterm_290">Patch #290 -
+  2013/02/12</a></h1>
+
+  <ul>
+    <li>revert of <a href="#xterm_282">patch #282</a> change was
+    incomplete (report by Jim Reisert).</li>
+
+    <li>fix typo in manpage (report by Vincent Lefevre).</li>
+  </ul>
+
   <h1><a name="xterm_289" id="xterm_289">Patch #289 -
   2013/02/08</a></h1>
 
   <ul>
-    <li>revert the <a href="#xterm_282">patch #282</a> which
+    <li>revert the <a href="#xterm_282">patch #282</a> change which
     restored "lost" text after shrinking/growing the screen size.
     If the screen was updated between the two resizing operations,
     unexpected text might be shown at the end (report/testcase by
diff --git a/xterm.man b/xterm.man
index 91bbac4..5964fff 100644
--- a/xterm.man
+++ b/xterm.man
@@ -1,5 +1,5 @@
 '\" t
-.\" $XTermId: xterm.man,v 1.555 2012/12/31 23:36:19 tom Exp $
+.\" $XTermId: xterm.man,v 1.556 2013/02/13 00:47:18 tom Exp $
 .\"
 .\" Copyright 1996-2011,2012 by Thomas E. Dickey
 .\"
@@ -3785,7 +3785,7 @@ Set window/icon labels using hexadecimal
 Query window/icon labels using hexadecimal
 .TP 5
 2
-Set window/icon labels using UTF-8 (overrides \fButf8Titles\fP resource).
+Set window/icon labels using UTF-8 (overrides \fButf8Title\fP resource).
 .TP 5
 3
 Query window/icon labels using UTF-8

commit 33ec1eeb9c037fa55f4c7988e84a9a9beb2581fa
Author: Julien Cristau <jcristau@debian.org>
Date:   Sat Feb 23 15:53:41 2013 +0100

    Imported Upstream version 289

diff --git a/INSTALL b/INSTALL
index ccd228a..13a18f0 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,4 +1,4 @@
--- $XTermId: INSTALL,v 1.141 2013/01/06 16:28:21 tom Exp $
+-- $XTermId: INSTALL,v 1.142 2013/02/03 19:36:47 tom Exp $
 -------------------------------------------------------------------------------
 -- Copyright 1997-2012,2013 by Thomas E. Dickey
 --
@@ -215,7 +215,7 @@ The options (in alphabetic order):
 	type.  If you do not need input method (and are troubled by the
 	warning messages), it is safe to disable this option.
 
-  --disable-leaks         test: set to test memory leaks
+  --disable-leaks         test: free permanent memory, analyze leaks
 
   	Compile-in code which frees memory which might confuse a leak-testing
 	tool.  Normally these chunks of memory are retained as long as xterm
@@ -565,6 +565,14 @@ The options (in alphabetic order):
 	Use --without-app-defaults or --with-app-defaults=no to disable the
 	feature.
 
+  --with-dmalloc          test: use Gray Watson's dmalloc library
+
+	Check for and link with dmalloc.
+
+  --with-dbmalloc         test: use Conor Cahill's dbmalloc library
+
+	Check for and link with dbmalloc.
+
   --with-desktop-category=XXX  one or more desktop catgories or auto
 	This is a list of names.  The configure script maps blanks and commas
 	to semicolons (";") which are used by the desktop utils as a separator.
@@ -706,6 +714,11 @@ The options (in alphabetic order):
 	If xterm is not installed setuid'd to root, this option is not needed,
 	since it cannot change the tty device's ownership.
 
+  --with-valgrind         test: use valgrind
+
+	Activate the --disable-leaks option, and ensure that "-g" is added to
+	CFLAGS.
+
   --with-xpm=DIR          use Xpm library for colored icon, may specify path
 
  	Use Xpm library to show colored icon in window decoration, e.g.,
diff --git a/MANIFEST b/MANIFEST
index 090dcd8..081a37c 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-MANIFEST for xterm-288, version xterm-288
+MANIFEST for xterm-289, version xterm-289
 --------------------------------------------------------------------------------
 MANIFEST                        this file
 256colres.h                     resource-definitions for 256-color mode
@@ -85,6 +85,7 @@ util.c                          miscellaneous utility functions for 'xterm'
 uxterm                          wrapper script to make unicode-xterm
 uxterm.desktop                  sample desktop file for uxterm
 uxterm.man                      manpage for uxterm, from Debian
+version.c                       xterm package version, used also in resize
 version.h                       version of xterm
 vms.c                           VMS version of xterm's spawn(), etc.
 vms.h                           system headers and definitions for vms.c
diff --git a/aclocal.m4 b/aclocal.m4
index 3dfb08a..e3e176b 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-dnl $XTermId: aclocal.m4,v 1.359 2013/01/03 01:37:48 tom Exp $
+dnl $XTermId: aclocal.m4,v 1.360 2013/02/03 19:30:21 tom Exp $
 dnl
 dnl ---------------------------------------------------------------------------
 dnl
@@ -73,31 +73,6 @@ ifdef([m4_version_compare],
 AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])),
 AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_ACVERSION_CHECK version: 3 updated: 2012/10/03 18:39:53
-dnl ------------------
-dnl Conditionally generate script according to whether we're using a given autoconf.
-dnl
-dnl $1 = version to compare against
-dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
-dnl $3 = code to use if AC_ACVERSION is older than $1.
-define([CF_ACVERSION_CHECK],
-[
-ifdef([m4_version_compare],
-[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
-[CF_ACVERSION_COMPARE(
-AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])),
-AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53
-dnl --------------------
-dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1,
-dnl                      MAJOR2, MINOR2, TERNARY2,
-dnl                      PRINTABLE2, not FOUND, FOUND)
-define([CF_ACVERSION_COMPARE],
-[ifelse(builtin([eval], [$2 < $5]), 1,
-[ifelse([$8], , ,[$8])],
-[ifelse([$9], , ,[$9])])])dnl
-dnl ---------------------------------------------------------------------------
 dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53
 dnl --------------------
 dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1,
@@ -500,6 +475,29 @@ AC_SUBST(SHOW_CC)
 AC_SUBST(ECHO_CC)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl CF_DISABLE_LEAKS version: 7 updated: 2012/10/02 20:55:03
+dnl ----------------
+dnl Combine no-leak checks with the libraries or tools that are used for the
+dnl checks.
+AC_DEFUN([CF_DISABLE_LEAKS],[
+
+AC_REQUIRE([CF_WITH_DMALLOC])
+AC_REQUIRE([CF_WITH_DBMALLOC])
+AC_REQUIRE([CF_WITH_VALGRIND])
+
+AC_MSG_CHECKING(if you want to perform memory-leak testing)
+AC_ARG_ENABLE(leaks,
+	[  --disable-leaks         test: free permanent memory, analyze leaks],
+	[if test "x$enableval" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi],
+	: ${with_no_leaks:=no})
+AC_MSG_RESULT($with_no_leaks)
+
+if test "$with_no_leaks" = yes ; then
+	AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
+	AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_DISABLE_RPATH_HACK version: 2 updated: 2011/02/13 13:31:33
 dnl ---------------------
 dnl The rpath-hack makes it simpler to build programs, particularly with the
@@ -1480,6 +1478,35 @@ AC_DEFUN([CF_MSG_LOG],[
 echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl CF_NO_LEAKS_OPTION version: 5 updated: 2012/10/02 20:55:03
+dnl ------------------
+dnl see CF_WITH_NO_LEAKS
+AC_DEFUN([CF_NO_LEAKS_OPTION],[
+AC_MSG_CHECKING(if you want to use $1 for testing)
+AC_ARG_WITH($1,
+	[$2],
+	[AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
+	 $4
+])
+	: ${with_cflags:=-g}
+	: ${with_no_leaks:=yes}
+	 with_$1=yes],
+	[with_$1=])
+AC_MSG_RESULT(${with_$1:-no})
+
+case .$with_cflags in #(vi
+.*-g*)
+	case .$CFLAGS in #(vi
+	.*-g*) #(vi
+		;;
+	*)
+		CF_ADD_CFLAGS([-g])
+		;;
+	esac
+	;;
+esac
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_PATHSEP version: 6 updated: 2012/09/29 18:38:12
 dnl ----------
 dnl Provide a value for the $PATH and similar separator (or amend the value
@@ -2987,6 +3014,21 @@ fi
 AC_SUBST(no_appsdir)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
+dnl ----------------
+dnl Configure-option for dbmalloc.  The optional parameter is used to override
+dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
+AC_DEFUN([CF_WITH_DBMALLOC],[
+CF_NO_LEAKS_OPTION(dbmalloc,
+	[  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
+	[USE_DBMALLOC])
+
+if test "$with_dbmalloc" = yes ; then
+	AC_CHECK_HEADER(dbmalloc.h,
+		[AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_WITH_DESKTOP_CATEGORY version: 4 updated: 2013/01/01 10:50:14
 dnl ------------------------
 dnl Taking into account the absence of standardization of desktop categories
@@ -3086,6 +3128,21 @@ then
 fi
 ])
 dnl ---------------------------------------------------------------------------
+dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
+dnl ---------------
+dnl Configure-option for dmalloc.  The optional parameter is used to override
+dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
+AC_DEFUN([CF_WITH_DMALLOC],[
+CF_NO_LEAKS_OPTION(dmalloc,
+	[  --with-dmalloc          test: use Gray Watson's dmalloc library],
+	[USE_DMALLOC])
+
+if test "$with_dmalloc" = yes ; then
+	AC_CHECK_HEADER(dmalloc.h,
+		[AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_WITH_ICONDIR version: 5 updated: 2012/07/22 09:18:02
 dnl ---------------
 dnl Handle configure option "--with-icondir", setting these shell variables:
@@ -3463,6 +3520,14 @@ fi
 AC_SUBST(no_pixmapdir)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
+dnl ----------------
+AC_DEFUN([CF_WITH_VALGRIND],[
+CF_NO_LEAKS_OPTION(valgrind,
+	[  --with-valgrind         test: use valgrind],
+	[USE_VALGRIND])
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_WITH_XPM version: 3 updated: 2012/10/04 06:57:36
 dnl -----------
 dnl Test for Xpm library, update compiler/loader flags if it is wanted and
diff --git a/button.c b/button.c
index eadf230..98e9ecb 100644
--- a/button.c
+++ b/button.c
@@ -1,7 +1,7 @@
-/* $XTermId: button.c,v 1.446 2013/01/08 09:34:42 tom Exp $ */
+/* $XTermId: button.c,v 1.451 2013/02/06 09:56:15 tom Exp $ */
 
 /*
- * Copyright 1999-2011,2012 by Thomas E. Dickey
+ * Copyright 1999-2012,2013 by Thomas E. Dickey
  *
  *                         All Rights Reserved
  *
@@ -1320,10 +1320,11 @@ xtermUtf8ToTextList(XtermWidget xw,
 	    for (i = 0; i < (*text_list_count); ++i) {
 		data = (Char *) (*text_list)[i];
 		size = strlen((*text_list)[i]) + 1;
-		data = UTF8toLatin1(screen, data, size, &size);
-		memcpy(tmp, data, size + 1);
-		new_text_list[i] = tmp;
-		tmp += size + 1;
+		if ((data = UTF8toLatin1(screen, data, size, &size)) != 0) {
+		    memcpy(tmp, data, size + 1);
+		    new_text_list[i] = tmp;
+		    tmp += size + 1;
+		}
 	    }
 	    XFreeStringList((*text_list));
 	    *text_list = new_text_list;
@@ -4188,15 +4189,21 @@ BtnCode(XButtonEvent * event, int button)
 {
     int result = (int) (32 + (KeyState(event->state) << 2));
 
+    if (event->type == MotionNotify)
+	result += 32;
+
     if (button < 0 || button > 5) {
 	result += 3;
     } else {
 	if (button > 3)
 	    result += (64 - 4);
-	if (event->type == MotionNotify)
-	    result += 32;
 	result += button;
     }
+    TRACE(("BtnCode button %d, %s state " FMT_MODIFIER_NAMES " ->%#x\n",
+	   button,
+	   visibleEventType(event->type),
+	   ARG_MODIFIER_NAMES(event->state),
+	   result));
     return result;
 }
 
@@ -4237,6 +4244,22 @@ EmitButtonCode(TScreen * screen,
     return count;
 }
 
+static int
+FirstBitN(int bits)
+{
+    int result = -1;
+    if (bits > 0) {
+	result = 0;
+	while (!(bits & 1)) {
+	    bits /= 2;
+	    ++result;
+	}
+    }
+    return result;
+}
+
+#define ButtonBit(button) ((button >= 0) ? (1 << (button)) : 0)
+
 #define EMIT_BUTTON(button) EmitButtonCode(screen, line, count, event, button)
 
 static void
@@ -4313,7 +4336,7 @@ EditorButton(XtermWidget xw, XButtonEvent * event)
 	/* Button-Motion events */
 	switch (event->type) {
 	case ButtonPress:
-	    screen->mouse_button = button;
+	    screen->mouse_button |= ButtonBit(button);
 	    count = EMIT_BUTTON(button);
 	    break;
 	case ButtonRelease:
@@ -4323,6 +4346,7 @@ EditorButton(XtermWidget xw, XButtonEvent * event)
 	     * release for buttons 1..3 to a -1, which will be later mapped
 	     * into a "0" (some button was released).
 	     */
+	    screen->mouse_button &= ~ButtonBit(button);
 	    if (button < 3) {
 		switch (screen->extend_coords) {
 		case SET_SGR_EXT_MODE_MOUSE:
@@ -4333,7 +4357,6 @@ EditorButton(XtermWidget xw, XButtonEvent * event)
 		    break;
 		}
 	    }
-	    screen->mouse_button = button;
 	    count = EMIT_BUTTON(button);
 	    break;
 	case MotionNotify:
@@ -4344,7 +4367,7 @@ EditorButton(XtermWidget xw, XButtonEvent * event)
 		&& (col == screen->mouse_col)) {
 		changed = False;
 	    } else {
-		count = EMIT_BUTTON(screen->mouse_button);
+		count = EMIT_BUTTON(FirstBitN(screen->mouse_button));
 	    }
 	    break;
 	default:
@@ -4815,9 +4838,11 @@ expandFormat(XtermWidget xw,
 static void
 executeCommand(char **argv)
 {
-    if (fork() == 0) {
-	execvp(argv[0], argv);
-	exit(EXIT_FAILURE);
+    if (argv != 0 && argv[0] != 0) {
+	if (fork() == 0) {
+	    execvp(argv[0], argv);
+	    exit(EXIT_FAILURE);
+	}
     }
 }
 
@@ -4957,8 +4982,8 @@ HandleInsertSelectable(Widget w,
 		    free(exps);
 		}
 		free(data);
-		free(temp);
 	    }
+	    free(temp);
 	}
     }
 }
diff --git a/charproc.c b/charproc.c
index 336d670..63ef021 100644
--- a/charproc.c
+++ b/charproc.c
@@ -1,7 +1,7 @@
-/* $XTermId: charproc.c,v 1.1280 2013/01/08 01:37:28 tom Exp $ */
+/* $XTermId: charproc.c,v 1.1283 2013/02/05 01:47:58 tom Exp $ */
 
 /*
- * Copyright 1999-2011,2012 by Thomas E. Dickey
+ * Copyright 1999-2012,2013 by Thomas E. Dickey
  *
  *                         All Rights Reserved
  *
@@ -4352,7 +4352,7 @@ in_put(XtermWidget xw)
 #endif
 	}
 	if (need_cleanup)
-	    Cleanup(0);
+	    NormalExit();
 #if OPT_DOUBLE_BUFFER
 	if (screen->needSwap) {
 	    XdbeSwapInfo swap;
@@ -7029,7 +7029,7 @@ set_flags_from_list(char *target,
     Cardinal n;
     int value = -1;
 
-    while (*source != '\0') {
+    while (!IsEmpty(source)) {
 	char *next = ParseList(&source);
 	Boolean found = False;
 
@@ -7261,7 +7261,7 @@ VTInitialize(Widget wrequest,
     TRACE(("   Actual  foreground 0x%06lx\n", wnew->old_foreground));
     TRACE(("   Actual  background 0x%06lx\n", wnew->old_background));
 
-    TScreenOf(wnew)->mouse_button = -1;
+    TScreenOf(wnew)->mouse_button = 0;
     TScreenOf(wnew)->mouse_row = -1;
     TScreenOf(wnew)->mouse_col = -1;
 
diff --git a/configure b/configure
index a1914d2..4ef1f1b 100755
--- a/configure
+++ b/configure
@@ -783,7 +783,10 @@ Optional Features:
   --disable-ziconbeep     disable -ziconbeep option
 Testing/development Options:
   --enable-trace          test: set to enable debugging traces
-  --disable-leaks         test: set to test memory leaks
+  --with-dmalloc          test: use Gray Watson's dmalloc library
+  --with-dbmalloc         test: use Conor Cahill's dbmalloc library
+  --with-valgrind         test: use valgrind
+  --disable-leaks         test: free permanent memory, analyze leaks
   --disable-echo          do not display "compiling" commands
   --enable-xmc-glitch     test: enable xmc magic-cookie emulation
   --enable-warnings       test: turn on GCC compiler warnings
@@ -981,7 +984,7 @@ if test -z "$CONFIG_SITE"; then
 fi
 for ac_site_file in $CONFIG_SITE; do
   if test -r "$ac_site_file"; then
-    { echo "$as_me:984: loading site script $ac_site_file" >&5
+    { echo "$as_me:987: loading site script $ac_site_file" >&5
 echo "$as_me: loading site script $ac_site_file" >&6;}
     cat "$ac_site_file" >&5
     . "$ac_site_file"
@@ -992,7 +995,7 @@ if test -r "$cache_file"; then
   # Some versions of bash will fail to source /dev/null (special
   # files actually), so we avoid doing that.
   if test -f "$cache_file"; then
-    { echo "$as_me:995: loading cache $cache_file" >&5
+    { echo "$as_me:998: loading cache $cache_file" >&5
 echo "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . $cache_file;;
@@ -1000,7 +1003,7 @@ echo "$as_me: loading cache $cache_file" >&6;}
     esac
   fi
 else
-  { echo "$as_me:1003: creating cache $cache_file" >&5
+  { echo "$as_me:1006: creating cache $cache_file" >&5
 echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
@@ -1016,21 +1019,21 @@ for ac_var in `(set) 2>&1 |
   eval ac_new_val="\$ac_env_${ac_var}_value"
   case $ac_old_set,$ac_new_set in
     set,)
-      { echo "$as_me:1019: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+      { echo "$as_me:1022: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { echo "$as_me:1023: error: \`$ac_var' was not set in the previous run" >&5
+      { echo "$as_me:1026: error: \`$ac_var' was not set in the previous run" >&5
 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
       if test "x$ac_old_val" != "x$ac_new_val"; then
-        { echo "$as_me:1029: error: \`$ac_var' has changed since the previous run:" >&5
+        { echo "$as_me:1032: error: \`$ac_var' has changed since the previous run:" >&5
 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-        { echo "$as_me:1031:   former value:  $ac_old_val" >&5
+        { echo "$as_me:1034:   former value:  $ac_old_val" >&5
 echo "$as_me:   former value:  $ac_old_val" >&2;}
-        { echo "$as_me:1033:   current value: $ac_new_val" >&5
+        { echo "$as_me:1036:   current value: $ac_new_val" >&5
 echo "$as_me:   current value: $ac_new_val" >&2;}
         ac_cache_corrupted=:
       fi;;
@@ -1049,9 +1052,9 @@ echo "$as_me:   current value: $ac_new_val" >&2;}
   fi
 done
 if $ac_cache_corrupted; then
-  { echo "$as_me:1052: error: changes in the environment can compromise the build" >&5
+  { echo "$as_me:1055: error: changes in the environment can compromise the build" >&5
 echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:1054: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+  { { echo "$as_me:1057: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1072,10 +1075,10 @@ esac
 echo "#! $SHELL" >conftest.sh
 echo  "exit 0"   >>conftest.sh
 chmod +x conftest.sh
-if { (echo "$as_me:1075: PATH=\".;.\"; conftest.sh") >&5
+if { (echo "$as_me:1078: PATH=\".;.\"; conftest.sh") >&5
   (PATH=".;."; conftest.sh) 2>&5
   ac_status=$?
-  echo "$as_me:1078: \$? = $ac_status" >&5
+  echo "$as_me:1081: \$? = $ac_status" >&5
   (exit $ac_status); }; then
   ac_path_separator=';'
 else
@@ -1103,7 +1106,7 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
   fi
 done
 if test -z "$ac_aux_dir"; then
-  { { echo "$as_me:1106: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+  { { echo "$as_me:1109: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1113,11 +1116,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
 
 # Make sure we can run config.sub.
 $ac_config_sub sun4 >/dev/null 2>&1 ||
-  { { echo "$as_me:1116: error: cannot run $ac_config_sub" >&5
+  { { echo "$as_me:1119: error: cannot run $ac_config_sub" >&5
 echo "$as_me: error: cannot run $ac_config_sub" >&2;}
    { (exit 1); exit 1; }; }
 
-echo "$as_me:1120: checking build system type" >&5
+echo "$as_me:1123: checking build system type" >&5
 echo $ECHO_N "checking build system type... $ECHO_C" >&6
 if test "${ac_cv_build+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1126,16 +1129,16 @@ else
 test -z "$ac_cv_build_alias" &&
   ac_cv_build_alias=`$ac_config_guess`
 test -z "$ac_cv_build_alias" &&
-  { { echo "$as_me:1129: error: cannot guess build type; you must specify one" >&5
+  { { echo "$as_me:1132: error: cannot guess build type; you must specify one" >&5
 echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
    { (exit 1); exit 1; }; }
 ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
-  { { echo "$as_me:1133: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+  { { echo "$as_me:1136: error: $ac_config_sub $ac_cv_build_alias failed." >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1138: result: $ac_cv_build" >&5
+echo "$as_me:1141: result: $ac_cv_build" >&5
 echo "${ECHO_T}$ac_cv_build" >&6
 build=$ac_cv_build
 build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1143,7 +1146,7 @@ build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
 if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
-	echo "$as_me:1146: checking host system type" >&5
+	echo "$as_me:1149: checking host system type" >&5
 echo $ECHO_N "checking host system type... $ECHO_C" >&6
 if test "${ac_cv_host+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1152,12 +1155,12 @@ else
 test -z "$ac_cv_host_alias" &&
   ac_cv_host_alias=$ac_cv_build_alias
 ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
-  { { echo "$as_me:1155: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+  { { echo "$as_me:1158: error: $ac_config_sub $ac_cv_host_alias failed" >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1160: result: $ac_cv_host" >&5
+echo "$as_me:1163: result: $ac_cv_host" >&5
 echo "${ECHO_T}$ac_cv_host" >&6
 host=$ac_cv_host
 host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1183,13 +1186,13 @@ else
 fi
 
 test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && echo "$as_me:1186: result: Configuring for $cf_cv_system_name" >&5
+test -n "$cf_cv_system_name" && echo "$as_me:1189: result: Configuring for $cf_cv_system_name" >&5
 echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
 
 if test ".$system_name" != ".$cf_cv_system_name" ; then
-	echo "$as_me:1190: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
+	echo "$as_me:1193: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
 echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6
-	{ { echo "$as_me:1192: error: \"Please remove config.cache and try again.\"" >&5
+	{ { echo "$as_me:1195: error: \"Please remove config.cache and try again.\"" >&5
 echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1214,7 +1217,7 @@ ac_main_return=return
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-echo "$as_me:1217: checking for $ac_word" >&5
+echo "$as_me:1220: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1229,7 +1232,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CC="${ac_tool_prefix}gcc"
-echo "$as_me:1232: found $ac_dir/$ac_word" >&5
+echo "$as_me:1235: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1237,10 +1240,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1240: result: $CC" >&5
+  echo "$as_me:1243: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1243: result: no" >&5
+  echo "$as_me:1246: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1249,7 +1252,7 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-echo "$as_me:1252: checking for $ac_word" >&5
+echo "$as_me:1255: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1264,7 +1267,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_CC="gcc"
-echo "$as_me:1267: found $ac_dir/$ac_word" >&5
+echo "$as_me:1270: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1272,10 +1275,10 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:1275: result: $ac_ct_CC" >&5
+  echo "$as_me:1278: result: $ac_ct_CC" >&5
 echo "${ECHO_T}$ac_ct_CC" >&6
 else
-  echo "$as_me:1278: result: no" >&5
+  echo "$as_me:1281: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1288,7 +1291,7 @@ if test -z "$CC"; then
   if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-echo "$as_me:1291: checking for $ac_word" >&5
+echo "$as_me:1294: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1303,7 +1306,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CC="${ac_tool_prefix}cc"
-echo "$as_me:1306: found $ac_dir/$ac_word" >&5
+echo "$as_me:1309: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1311,10 +1314,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1314: result: $CC" >&5
+  echo "$as_me:1317: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1317: result: no" >&5
+  echo "$as_me:1320: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1323,7 +1326,7 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-echo "$as_me:1326: checking for $ac_word" >&5
+echo "$as_me:1329: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1338,7 +1341,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_CC="cc"
-echo "$as_me:1341: found $ac_dir/$ac_word" >&5
+echo "$as_me:1344: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1346,10 +1349,10 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:1349: result: $ac_ct_CC" >&5
+  echo "$as_me:1352: result: $ac_ct_CC" >&5
 echo "${ECHO_T}$ac_ct_CC" >&6
 else
-  echo "$as_me:1352: result: no" >&5
+  echo "$as_me:1355: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1362,7 +1365,7 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-echo "$as_me:1365: checking for $ac_word" >&5
+echo "$as_me:1368: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1382,7 +1385,7 @@ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
   continue
 fi
 ac_cv_prog_CC="cc"
-echo "$as_me:1385: found $ac_dir/$ac_word" >&5
+echo "$as_me:1388: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1404,10 +1407,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1407: result: $CC" >&5
+  echo "$as_me:1410: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1410: result: no" >&5
+  echo "$as_me:1413: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1418,7 +1421,7 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1421: checking for $ac_word" >&5
+echo "$as_me:1424: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then


Reply to: