changeset 2445:04dae202d316 vim73

Fixes for coverity warnings.
author Bram Moolenaar <bram@vim.org>
date Sat, 31 Jul 2010 16:44:19 +0200
parents 3fbd9bce03f1
children 348f64c129df
files runtime/doc/diff.txt runtime/doc/todo.txt src/diff.c src/ex_getln.c src/hardcopy.c src/misc2.c src/netbeans.c src/normal.c src/option.c src/spell.c src/ui.c
diffstat 11 files changed, 25 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- 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 @@ In each of the edited files these option
 
 	'diff'		on
 	'scrollbind'	on
+	'cursorbind'	on
 	'scrollopt'	includes "hor"
 	'wrap'		off
 	'foldmethod'	"diff"
@@ -133,6 +134,7 @@ the old values are not remembered.
 
 	'diff'		off
 	'scrollbind'	off
+	'cursorbind'	off
 	'scrollopt'	without "hor"
 	'wrap'		on
 	'foldmethod'	"manual"
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -30,8 +30,6 @@ be worked on, but only if you sponsor Vi
 							*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 @@ Windows 7: installing Vim again doesn't 
 
 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:
--- a/src/diff.c
+++ b/src/diff.c
@@ -1177,6 +1177,9 @@ ex_diffoff(eap)
 	{
 	    /* 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 @@ ex_diffgetput(eap)
     }
 
     /* 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
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -3780,7 +3780,7 @@ vim_strsave_fnameescape(fname, shell)
 
     /* '>' 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;
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -1943,6 +1943,7 @@ prt_open_resource(resource)
 	fclose(fd_resource);
 	return FALSE;
     }
+    fclose(fd_resource);
 
     prt_resfile.line_end = -1;
     prt_resfile.line_start = 0;
@@ -1956,7 +1957,6 @@ prt_open_resource(resource)
     {
 	EMSG2(_("E618: file \"%s\" is not a PostScript resource file"),
 		resource->filename);
-	fclose(fd_resource);
 	return FALSE;
     }
 
@@ -1974,7 +1974,6 @@ prt_open_resource(resource)
     {
 	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 @@ prt_open_resource(resource)
     {
 	EMSG2(_("E619: file \"%s\" is not a supported PostScript resource file"),
 		resource->filename);
-	fclose(fd_resource);
 	return FALSE;
     }
 
@@ -2036,12 +2034,9 @@ prt_open_resource(resource)
     {
 	EMSG2(_("E619: file \"%s\" is not a supported PostScript resource file"),
 		resource->filename);
-	fclose(fd_resource);
 	return FALSE;
     }
 
-    fclose(fd_resource);
-
     return TRUE;
 }
 
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -4533,8 +4533,9 @@ vim_findfile_init(path, filename, stopdi
 	 * 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 */
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -3682,17 +3682,18 @@ addsigntype(
 	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));
 	}
     }
 
--- a/src/normal.c
+++ b/src/normal.c
@@ -6358,7 +6358,7 @@ nv_csearch(cap)
 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 @@ nv_brackets(cap)
     {
 	if (cap->nchar == '*')
 	    cap->nchar = '/';
-	new_pos.lnum = 0;
 	prev_pos.lnum = 0;
 	if (cap->nchar == 'm' || cap->nchar == 'M')
 	{
--- a/src/option.c
+++ b/src/option.c
@@ -3212,6 +3212,8 @@ set_init_1()
 		    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 @@ do_set(arg, opt_flags)
 		 * '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;
--- a/src/spell.c
+++ b/src/spell.c
@@ -9439,7 +9439,8 @@ spell_add_word(word, len, bad, idx, undo
 		    fseek(fd, fpos_next, SEEK_SET);
 		}
 	    }
-	    fclose(fd);
+	    if (fd != NULL)
+		fclose(fd);
 	}
     }
 
--- a/src/ui.c
+++ b/src/ui.c
@@ -3100,6 +3100,9 @@ get_fpos_of_mouse(mpos)
 
     if (mpos->col > 0)
 	--mpos->col;
+#ifdef FEAT_VIRTUALEDIT
+    mpos->coladd = 0;
+#endif
     return IN_BUFFER;
 }