Fixes for coverity warnings.
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;
}