diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index 1b5c2a1..c94bf69 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.3c.  Last change: 2009 Sep 15
+*diff.txt*      For Vim version 7.3c.  Last change: 2010 Jul 31
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -57,6 +57,7 @@
 
 	'diff'		on
 	'scrollbind'	on
+	'cursorbind'	on
 	'scrollopt'	includes "hor"
 	'wrap'		off
 	'foldmethod'	"diff"
@@ -133,6 +134,7 @@
 
 	'diff'		off
 	'scrollbind'	off
+	'cursorbind'	off
 	'scrollopt'	without "hor"
 	'wrap'		on
 	'foldmethod'	"manual"
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index d50f65a..e887fd3 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -30,8 +30,6 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-After ":diffoff" scroll binding doesn't stop completely.
-
 Windows 7: "Open with..." menu starts Vim without a file.
 Need to use other registry methods in if_ole.cpp?
 
@@ -39,9 +37,6 @@
 
 Move more common code from if_python.c and if_python3.c to if_py_both.h
 
-Add filetype completion to user commands. (Christian Brabandt, 2010 Jul 26)
-But call it "filetype" instead of "syntax"?
-
 Uninspected issues on http://scan.coverity.com/rung2.html
 
 Before release 7.3:
diff --git a/src/diff.c b/src/diff.c
index e733ccd..9b6d279 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1177,6 +1177,9 @@
 	{
 	    /* Set 'diff', 'scrollbind' off and 'wrap' on. */
 	    wp->w_p_diff = FALSE;
+#ifdef FEAT_CURSORBIND
+	    wp->w_p_crb = FALSE;
+#endif
 	    wp->w_p_scb = FALSE;
 	    wp->w_p_wrap = TRUE;
 #ifdef FEAT_FOLDING
@@ -2360,7 +2363,7 @@
     }
 
     /* restore curwin/curbuf and a few other things */
-    if (idx_other == idx_to)
+    if (eap->cmdidx != CMD_diffget)
     {
 	/* Syncing undo only works for the current buffer, but we change
 	 * another buffer.  Sync undo if the command was typed.  This isn't
diff --git a/src/ex_getln.c b/src/ex_getln.c
index b292f63..790d531 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -3780,7 +3780,7 @@
 
     /* '>' and '+' are special at the start of some commands, e.g. ":edit" and
      * ":write".  "cd -" has a special meaning. */
-    if (*p == '>' || *p == '+' || (*p == '-' && p[1] == NUL))
+    if (p != NULL && (*p == '>' || *p == '+' || (*p == '-' && p[1] == NUL)))
 	escape_fname(&p);
 
     return p;
diff --git a/src/hardcopy.c b/src/hardcopy.c
index 744a2a2..0747dc9 100644
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -1943,6 +1943,7 @@
 	fclose(fd_resource);
 	return FALSE;
     }
+    fclose(fd_resource);
 
     prt_resfile.line_end = -1;
     prt_resfile.line_start = 0;
@@ -1956,7 +1957,6 @@
     {
 	EMSG2(_("E618: file \"%s\" is not a PostScript resource file"),
 		resource->filename);
-	fclose(fd_resource);
 	return FALSE;
     }
 
@@ -1974,7 +1974,6 @@
     {
 	EMSG2(_("E619: file \"%s\" is not a supported PostScript resource file"),
 		resource->filename);
-	fclose(fd_resource);
 	return FALSE;
     }
     offset += (int)STRLEN(PRT_RESOURCE_RESOURCE);
@@ -1993,7 +1992,6 @@
     {
 	EMSG2(_("E619: file \"%s\" is not a supported PostScript resource file"),
 		resource->filename);
-	fclose(fd_resource);
 	return FALSE;
     }
 
@@ -2036,12 +2034,9 @@
     {
 	EMSG2(_("E619: file \"%s\" is not a supported PostScript resource file"),
 		resource->filename);
-	fclose(fd_resource);
 	return FALSE;
     }
 
-    fclose(fd_resource);
-
     return TRUE;
 }
 
diff --git a/src/misc2.c b/src/misc2.c
index 6b9ffe1..96813a4 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -4533,8 +4533,9 @@
 	 * This is needed if the parameter path is fully qualified.
 	 */
 	search_ctx->ffsc_start_dir = vim_strsave(search_ctx->ffsc_fix_path);
-	if (search_ctx->ffsc_start_dir)
-	    search_ctx->ffsc_fix_path[0] = NUL;
+	if (search_ctx->ffsc_start_dir == NULL)
+	    goto error_return;
+	search_ctx->ffsc_fix_path[0] = NUL;
     }
 
     /* create an absolute path */
diff --git a/src/netbeans.c b/src/netbeans.c
index 00c7ce2..68914eb 100644
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -3682,17 +3682,18 @@
 	if (buf->signmaplen == 0) /* first allocation */
 	{
 	    buf->signmaplen = 5;
-	    buf->signmap = (int *)alloc_clear(buf->signmaplen * sizeof(int *));
+	    buf->signmap = (int *)alloc_clear(buf->signmaplen * sizeof(int));
 	}
 	else    /* grow it */
 	{
 	    int incr;
 	    int oldlen = buf->signmaplen;
+
 	    buf->signmaplen *= 2;
 	    incr = buf->signmaplen - oldlen;
 	    buf->signmap = (int *)vim_realloc(buf->signmap,
-					       buf->signmaplen*sizeof(int *));
-	    vim_memset(buf->signmap + oldlen, 0, incr * sizeof(int *));
+					       buf->signmaplen * sizeof(int));
+	    vim_memset(buf->signmap + oldlen, 0, incr * sizeof(int));
 	}
     }
 
diff --git a/src/normal.c b/src/normal.c
index e17aec3..b76e40d 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -6358,7 +6358,7 @@
 nv_brackets(cap)
     cmdarg_T	*cap;
 {
-    pos_T	new_pos;
+    pos_T	new_pos = INIT_POS_T(0, 0, 0);
     pos_T	prev_pos;
     pos_T	*pos = NULL;	    /* init for GCC */
     pos_T	old_pos;	    /* cursor position before command */
@@ -6436,7 +6436,6 @@
     {
 	if (cap->nchar == '*')
 	    cap->nchar = '/';
-	new_pos.lnum = 0;
 	prev_pos.lnum = 0;
 	if (cap->nchar == 'm' || cap->nchar == 'M')
 	{
diff --git a/src/option.c b/src/option.c
index 2c5e88b..06e569c 100644
--- a/src/option.c
+++ b/src/option.c
@@ -3212,6 +3212,8 @@
 		    options[opt_idx].def_val[VI_DEFAULT] = buf;
 		    options[opt_idx].flags |= P_DEF_ALLOCED;
 		}
+		else
+		    vim_free(buf); /* cannot happen */
 	    }
 	    if (mustfree)
 		vim_free(cdpath);
@@ -4262,6 +4264,7 @@
 		 * 'foldmethod' becomes "marker" instead of "diff" and that
 		 * "wrap" gets set. */
 		if (curwin->w_p_diff
+			&& opt_idx >= 0  /* shut up coverity warning */
 			&& (options[opt_idx].indir == PV_FDM
 			    || options[opt_idx].indir == PV_WRAP))
 		    goto skip;
diff --git a/src/spell.c b/src/spell.c
index 6d4d47e..30510ad 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -9439,7 +9439,8 @@
 		    fseek(fd, fpos_next, SEEK_SET);
 		}
 	    }
-	    fclose(fd);
+	    if (fd != NULL)
+		fclose(fd);
 	}
     }
 
diff --git a/src/ui.c b/src/ui.c
index fbdc325..a05490c 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -3100,6 +3100,9 @@
 
     if (mpos->col > 0)
 	--mpos->col;
+#ifdef FEAT_VIRTUALEDIT
+    mpos->coladd = 0;
+#endif
     return IN_BUFFER;
 }
 
