diff -Naur --exclude Makefile --exclude info wfdb-10.3.9/conf/version.def wfdb-10.3.10/conf/version.def
--- wfdb-10.3.9/conf/version.def	2003-07-16 20:07:09.000000000 -0400
+++ wfdb-10.3.10/conf/version.def	2003-08-03 20:29:00.000000000 -0400
@@ -1,10 +1,10 @@
 # file: version.def		G. Moody	24 May 2000
-#				Last revised:	16 July 2003
+#				Last revised:	3 August 2003
 # Each release of the WFDB Software Package is identified by a three-part
 # version number, defined here:
 MAJOR = 10
 MINOR = 3
-RELEASE = 9
+RELEASE = 10
 VERSION = $(MAJOR).$(MINOR).$(RELEASE)
 
 # RPMRELEASE can be incremented if changes are made between official
@@ -16,6 +16,6 @@
 VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE)
 
 # WAVEVERSION is the WAVE version number.
-WAVEVERSION = 6.6
+WAVEVERSION = 6.7
 # _____________________________________________________________________________
 
diff -Naur --exclude Makefile --exclude info wfdb-10.3.9/doc/wag-src/wag.ht0 wfdb-10.3.10/doc/wag-src/wag.ht0
--- wfdb-10.3.9/doc/wag-src/wag.ht0	2002-10-29 10:00:30.000000000 -0500
+++ wfdb-10.3.10/doc/wag-src/wag.ht0	2003-08-03 20:18:32.000000000 -0400
@@ -20,7 +20,7 @@
 George B. Moody<BR> 
 Harvard-MIT Division of Health Sciences and Technology</STRONG></P><P>
 <P>
-Copyright &#169;1980-2002 George B. Moody
+Copyright &#169;1980-2003 George B. Moody
 <P>
 The most recent versions of the programs described in this guide may be freely
 downloaded from <A HREF="http://www.physionet.org/">PhysioNet</A>.  For
diff -Naur --exclude Makefile --exclude info wfdb-10.3.9/doc/wag-src/wag.tex wfdb-10.3.10/doc/wag-src/wag.tex
--- wfdb-10.3.9/doc/wag-src/wag.tex	2002-10-29 15:36:11.000000000 -0500
+++ wfdb-10.3.10/doc/wag-src/wag.tex	2003-08-03 20:18:21.000000000 -0400
@@ -36,7 +36,7 @@
 \pagestyle{empty}
 \vspace*{\fill}
 \noindent
-Copyright \copyright 1992 -- 2002 George B. Moody
+Copyright \copyright 1992 -- 2003 George B. Moody
 
 \vspace{1 in}
 \noindent
diff -Naur --exclude Makefile --exclude info wfdb-10.3.9/doc/wpg-src/wpg0.tex wfdb-10.3.10/doc/wpg-src/wpg0.tex
--- wfdb-10.3.9/doc/wpg-src/wpg0.tex	2003-07-16 22:28:51.000000000 -0400
+++ wfdb-10.3.10/doc/wpg-src/wpg0.tex	2003-08-03 20:24:19.000000000 -0400
@@ -21,7 +21,7 @@
 @center Harvard-MIT Division of Health Sciences and Technology
 @page
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1989 -- 2002 George B. Moody
+Copyright @copyright{} 1989 -- 2003 George B. Moody
 @sp 2
 The most recent versions of the software described in this guide may be
 downloaded from @uref{http://www.physionet.org/}.  For further
@@ -488,6 +488,13 @@
 WFDB Software Package distribution, for information on any more recent
 changes that may not be described here.
 
+@unnumberedsubsec Changes in version 10.3.10
+
+In version 10.3.9, the functions @code{setannstr}, @code{setanndesc},
+and @code{setecgstr} did not contain necessary checks to avoid invoking
+@code{strcmp} with a @code{NULL} argument.  These checks have been added in
+version 10.3.10.
+
 @unnumberedsubsec Changes in version 10.3.9
 
 The WFDB library functions @code{setwfdb}, @code{setannstr},
@@ -8370,8 +8377,8 @@
 in even-numbered years, they are convened in North America, and in Europe in
 odd-numbered years.  The deadline for submission of abstracts is 1 May each
 year.  Proceedings of the conferences are published by the IEEE, and
-usually appear about 3 months after the date of the conference.  CinC will be
-in Memphis, Tennessee in 2002, and in Thessaloniki in 2003.
+usually appear about 3 months after the date of the conference.  CinC
+will be in Thessaloniki in 2003 and in Chicago in 2004.
 
 @item Proceedings of Computers in Cardiology (ISSN 0276-6574)
 @sp 1
@@ -8750,7 +8757,7 @@
 
 George B. Moody
 
-Copyright (C) 1989 -- 2002 George B. Moody
+Copyright (C) 1989 -- 2003 George B. Moody
 
 Permission is granted to make and distribute verbatim copies of this
 guide provided that the copyright notice and this permission notice are
diff -Naur --exclude Makefile --exclude info wfdb-10.3.9/doc/wpg-src/wpg.ht0 wfdb-10.3.10/doc/wpg-src/wpg.ht0
--- wfdb-10.3.9/doc/wpg-src/wpg.ht0	2002-07-21 23:27:15.000000000 -0400
+++ wfdb-10.3.10/doc/wpg-src/wpg.ht0	2003-08-03 20:17:16.000000000 -0400
@@ -19,7 +19,7 @@
 George B. Moody<BR> 
 Harvard-MIT Division of Health Sciences and Technology<BR></STRONG></P><P>
 <P>
-Copyright &#169;1980-2002 George B. Moody.
+Copyright &#169;1980-2003 George B. Moody.
 <P>
 The most recent versions of the software described in this guide are freely
 downloadable from <A HREF="http://www.physionet.org/">PhysioNet</A>.  For
diff -Naur --exclude Makefile --exclude info wfdb-10.3.9/doc/wug-src/wug0.tex wfdb-10.3.10/doc/wug-src/wug0.tex
--- wfdb-10.3.9/doc/wug-src/wug0.tex	2003-04-02 23:11:40.000000000 -0500
+++ wfdb-10.3.10/doc/wug-src/wug0.tex	2003-08-03 20:17:06.000000000 -0400
@@ -57,7 +57,7 @@
 \pagestyle{empty}
 \vspace*{\fill}
 \noindent
-Copyright \copyright 1992 -- 2002 George B. Moody
+Copyright \copyright 1992 -- 2003 George B. Moody
 
 \vspace{1 in}
 \noindent
@@ -4863,16 +4863,6 @@
 Microstar Laboratories,
 \htmladdnormallink{http://www.mstarlabs.com/).}{http://www.mstarlabs.com/}
 
-\index{CD-ROM}\index{MIT-BIH Arrhythmia Database}
-\index{European ST-T Database}\index{MIT-BIH Polysomnographic Database}
-\index{MGH/MF Waveform Database}
-You may also find that an existing database of digitally recorded signals may
-be useful for your studies.  Four such databases are currently available on
-CD-ROM (the MIT-BIH Arrhythmia Database, the European ST-T Database, the
-MIT-BIH Polysomnographic Database, and the MGH/MF Waveform Database), and
-several more databases in this format are in preparation.  These disks are
-compatible with any CD-ROM drive.
-
 Note that the \WAVE{} host
 \index{WAVE host@\WAVE{} host}
 must be able
@@ -4931,6 +4921,25 @@
 flash memory cards.
 \end{itemize}
 
+\index{CD-ROM}\index{MIT-BIH Arrhythmia Database} \index{European ST-T
+Database}\index{MIT-BIH Polysomnographic Database} \index{MGH/MF
+Waveform Database} You may also find that an existing database of
+digitally recorded signals may be useful for your studies.  PhysioNet, at
+\htmladdnormallink{http://www.physionet.org/,}{http:/www.physionet.org/},
+offers free on-line access to over 30 such databases with thousands of
+recordings ranging in length from a few seconds to several days.
+These include all or most of the MIT-BIH Arrhythmia Database, the
+European ST-T Database, the MIT-BIH Polysomnographic Database, the
+MGH/MF Waveform Database, and the Long-Term ST Database (which are
+also available on CD-ROMs from their creators), and many other
+databases available only via PhysioNet.  \WAVE{} can read these
+databases directly from PhysioNet without downloading them first (the
+WFDB library, which handles reading and writing data for \WAVE{},
+contains HTTP client code that permits applications such as \WAVE{} to
+read input with equal ease from local disks or remote web servers).
+This is an excellent way to explore PhysioBank (PhysioNet's collection
+of signal databases).
+
 \section{About Linux}
 
 \label{sec:linux}
@@ -6368,14 +6377,18 @@
 and the original unfiltered signals side-by-side), another approach is
 to create a single header file that names the signal files for both
 records.  It is not necessary for all signals to be in the same signal
-file, or even on the same disk drive.  In this case, however, the total
-number of open signals must be 32 or less (see the next question).
+file, or even on the same disk drive.
 
 \subsection{Can \WAVE{} open more than 32 signals in a window at once?}
 
 Yes.  There is no fixed limit on the number of signals that current versions
 of \WAVE{} can open.  Earlier versions were limited to 32 or fewer signals.
 
+If the signal window gets to be too crowded, select a subset of
+signals to be displayed by editing the signal list (in \WAVE{}'s {\sf
+Analyze} window, and choose {\sf Draw: listed signals only} in the
+{\sf View} window.
+
 \subsection{Can \WAVE{} open more than one annotation file in a window at once?}
 
 No.  In most cases, however, it's not really necessary to do so.
diff -Naur --exclude Makefile --exclude info wfdb-10.3.9/lib/annot.c wfdb-10.3.10/lib/annot.c
--- wfdb-10.3.9/lib/annot.c	2003-07-16 20:10:04.000000000 -0400
+++ wfdb-10.3.10/lib/annot.c	2003-08-03 20:13:45.000000000 -0400
@@ -1,5 +1,5 @@
 /* file: annot.c	G. Moody       	 13 April 1989
-			Last revised:    16 July 2003		wfdblib 10.3.9
+			Last revised:    3 August 2003		wfdblib 10.3.10
 WFDB library functions for annotations
 
 _______________________________________________________________________________
@@ -694,7 +694,7 @@
 char *string;
 {
     if (NOTQRS <= code && code <= ACMAX) {
-	if (strcmp(cstring[code], string)) {
+	if (cstring[code] == NULL || strcmp(cstring[code], string)) {
 	    char *p = malloc(strlen(string)+1);
 	    if (p) strcpy(cstring[code] = p, string);
 	}
@@ -746,7 +746,7 @@
 char *string;
 {
     if (0 < code && code <= ACMAX) {
-	if (strcmp(astring[code], string)) {
+	if (astring[code] == NULL || strcmp(astring[code], string)) {
 	    char *p = malloc(strlen(string)+1);
 	    if (p) {
 		strcpy(astring[code] = p, string);
@@ -756,7 +756,7 @@
 	return (0);
     }
     else if (-ACMAX < code && code <= 0) {
-	if (strcmp(astring[-code], string)) {
+	if (astring[-code] == NULL || strcmp(astring[-code], string)) {
 	    char *p = malloc(strlen(string)+1);
 	    if (p) strcpy(astring[-code] = p, string);
 	}
@@ -835,7 +835,7 @@
 char *string;
 {
     if (0 < code && code <= ACMAX) {
-	if (strcmp(tstring[code], string)) {
+	if (tstring[code] == NULL || strcmp(tstring[code], string)) {
 	    char *p = malloc(strlen(string)+1);
 	    if (p) {
 		strcpy(tstring[code] = p, string);
@@ -845,7 +845,7 @@
 	return (0);
     }
     else if (-ACMAX < code && code <= 0) {
-	if (strcmp(tstring[-code], string)) {
+	if (tstring[-code] == NULL || strcmp(tstring[-code], string)) {
 	    char *p = malloc(strlen(string)+1);
 	    if (p) strcpy(tstring[-code] = p, string);
 	}
diff -Naur --exclude Makefile --exclude info wfdb-10.3.9/lib/wfdb.h0 wfdb-10.3.10/lib/wfdb.h0
--- wfdb-10.3.9/lib/wfdb.h0	2003-07-16 20:07:06.000000000 -0400
+++ wfdb-10.3.10/lib/wfdb.h0	2003-08-03 20:28:04.000000000 -0400
@@ -1,5 +1,5 @@
 /* file: wfdb.h		G. Moody	13 June 1983
-			Last revised:   16 July 2003	wfdblib 10.3.9
+			Last revised:   3 August 2003	wfdblib 10.3.10
 WFDB library type, constant, structure, and function interface definitions
 
 _______________________________________________________________________________
@@ -33,7 +33,7 @@
 /* WFDB library version. */
 #define WFDB_MAJOR   10
 #define WFDB_MINOR   3
-#define WFDB_RELEASE 9
+#define WFDB_RELEASE 10
 #define WFDB_NETFILES 1	/* if 1, library includes code for HTTP, FTP clients */
 
 /* Determine what type of compiler is being used. */
diff -Naur --exclude Makefile --exclude info wfdb-10.3.9/lib/wfdbio.c wfdb-10.3.10/lib/wfdbio.c
--- wfdb-10.3.9/lib/wfdbio.c	2003-07-16 21:38:30.000000000 -0400
+++ wfdb-10.3.10/lib/wfdbio.c	2003-08-03 21:11:17.000000000 -0400
@@ -562,7 +562,7 @@
     (void)strcpy(t, wfdbpath);
     t[l++] = PSEP;		/* append a path separator */
     (void)strncpy(t+l, s, i); 	/* append the new path component */
-    t[l+i+1] = '\0';
+    t[l+i] = '\0';
     setwfdb(t);
     free(t);
 }
diff -Naur --exclude Makefile --exclude info wfdb-10.3.9/NEWS wfdb-10.3.10/NEWS
--- wfdb-10.3.9/NEWS	2003-07-16 22:30:19.000000000 -0400
+++ wfdb-10.3.10/NEWS	2003-08-03 21:16:23.000000000 -0400
@@ -1,3 +1,14 @@
+10.3.10:
+	In version 10.3.9, the functions setannstr, setanndesc, and setecgstr
+	(in lib/annot.c) did not contain necessary checks to avoid invoking
+	strcmp with a NULL argument.  These checks have been added in version
+	10.3.10.  In the internal function wfdb_addtopath (in lib/wfdbio.c),
+	an extra character was appended when adding a component to the WFDB
+	path (in version 10.3.9 only);  this has also been corrected.
+
+	WAVE now incorporates a simplified method for synchronizing multiple
+	windows.  The WAVE version number has been changed from 6.6 to 6.7.
+
 10.3.9:
 	The WFDB library functions setwfdb, setannstr, setanndesc, and
 	setecgstr now copy their input string arguments, so that it is
diff -Naur --exclude Makefile --exclude info wfdb-10.3.9/wave/edit.c wfdb-10.3.10/wave/edit.c
--- wfdb-10.3.9/wave/edit.c	2003-02-12 10:49:57.000000000 -0500
+++ wfdb-10.3.10/wave/edit.c	2003-07-24 03:16:45.000000000 -0400
@@ -1,5 +1,5 @@
 /* file: edit.c		G. Moody	 1 May 1990
-			Last revised:  12 February 2003
+			Last revised:  24 July 2003
 Annotation-editing functions for WAVE
 
 -------------------------------------------------------------------------------
@@ -859,23 +859,27 @@
 		 3. If the <Meta> key is depressed, select the signal nearest
 		    the pointer, delete its first occurrence (if any) in the
 		    signal list, and return.
-	         4. If the middle button is down, switch the annotation
+		 4. If annotation editing is disabled and  if this instance of
+		    WAVE has a sync button, signal other WAVE processes to
+		    recenter their signal windows at the time indicated by
+		    the mouse, and return.
+	         5. If the middle button is down, switch the annotation
 		    template to the previous entry in the annotation template
 		    buffer.
-	         5. Make the annotation template popup visible.
-	         6. If the middle or right button is down, or if there are no
+	         6. Make the annotation template popup visible.
+	         7. If the middle or right button is down, or if there are no
 		    annotations left of the pointer, return.
-		 7. If annotations are shown attached to signals, and the
+		 8. If annotations are shown attached to signals, and the
 		    pointer is in a selection box, attach the previous
 		    annotation.
-		 8. If annotations are shown attached to signals, and the
+		 9. If annotations are shown attached to signals, and the
 		    pointer is not in a selection box, attach the closest
 		    annotation to the left of the pointer.
-		 9. Otherwise, find the previous group of simultaneous
+		10. Otherwise, find the previous group of simultaneous
 		    annotations and attach the first annotation of that group.
-		10. Recenter the display around the attached annotation, if
+		11. Recenter the display around the attached annotation, if
 		    it is not currently displayed.
-		11. Draw marker bars above and below the attached annotation.
+		12. Draw marker bars above and below the attached annotation.
 	    */
 	    if (event_shift_is_down(event) ||
 		event_ctrl_is_down(event) ||
@@ -896,6 +900,13 @@
 		break;
 	    }
 	    dragged = 0;
+	    if (accept_edit == 0 && wave_ppid) {
+		char buf[80];
+		sprintf(buf, "wave-remote -pid %d -f '%s'\n", wave_ppid,
+			mstimstr(-t));
+		system(buf);
+		break;
+	    }
 	    if (middle_down) set_prev_ann_template();
 	    show_ann_template();
 	    if (middle_down || right_down) break;
@@ -1013,17 +1024,18 @@
 	    /* The middle button was pressed:
 	         1. If the left or right button is down, ignore this event.
 		 2. Draw marker bars above and below the pointer.
-		 3. If the <Control> key is depressed and this instance of
-		    WAVE has a sync button, signal other WAVE processes to
-		    recenter their signal windows at the time indicated by
-		    the mouse, and return.
+		 3. If annotation editing is disabled or if the <Control> key
+		    is depressed, and if this instance of WAVE has a sync
+		    button, signal other WAVE processes to recenter their
+		    signal windows at the time indicated by the mouse, and
+		    return.
 		 4. If there is an attached annotation, and the pointer is
 		    outside the box, detach the annotation (erase the box).
 	    */
 	    if (left_down || right_down || ann_template.anntyp < 0) break;
 	    middle_down = 1;
 	    bar(x, y /* ? */, 1);
-	    if (event_ctrl_is_down(event) && wave_ppid) {
+	    if ((accept_edit == 0 || event_ctrl_is_down(event)) && wave_ppid) {
 		char buf[80];
 		sprintf(buf, "wave-remote -pid %d -f '%s'\n", wave_ppid,
 			mstimstr(-t));
