]> granicus.if.org Git - vim/commitdiff
patch 8.1.2340: quickfix test fails under valgrind and asan v8.1.2340
authorBram Moolenaar <Bram@vim.org>
Sun, 24 Nov 2019 21:13:58 +0000 (22:13 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 24 Nov 2019 21:13:58 +0000 (22:13 +0100)
Problem:    Quickfix test fails under valgrind and asan.
Solution:   Make sure long line does not overflow IObuff. (Dominique Pelle,
            closes #5263)  Put back fix for large terminals. (Yegappan
            Lakshmanan, closes #5264)

src/quickfix.c
src/testdir/test_quickfix.vim
src/version.c

index e58318a3bb964e2b4a8ae2efc309f8e51d2aab6e..72cdc6ed6be3811f49a8649f2d967d654402fffc 100644 (file)
@@ -4416,7 +4416,7 @@ qf_buf_add_line(buf_T *buf, linenr_T lnum, qfline_T *qfp, char_u *dirname)
 
     if (qfp->qf_module != NULL)
     {
-       STRCPY(IObuff, qfp->qf_module);
+       vim_strncpy(IObuff, qfp->qf_module, IOSIZE - 1);
        len = (int)STRLEN(IObuff);
     }
     else if (qfp->qf_fnum != 0
@@ -4424,7 +4424,7 @@ qf_buf_add_line(buf_T *buf, linenr_T lnum, qfline_T *qfp, char_u *dirname)
            && errbuf->b_fname != NULL)
     {
        if (qfp->qf_type == 1)  // :helpgrep
-           STRCPY(IObuff, gettail(errbuf->b_fname));
+           vim_strncpy(IObuff, gettail(errbuf->b_fname), IOSIZE - 1);
        else
        {
            // shorten the file name if not done already
@@ -4435,26 +4435,29 @@ qf_buf_add_line(buf_T *buf, linenr_T lnum, qfline_T *qfp, char_u *dirname)
                    mch_dirname(dirname, MAXPATHL);
                shorten_buf_fname(errbuf, dirname, FALSE);
            }
-           STRCPY(IObuff, errbuf->b_fname);
+           vim_strncpy(IObuff, errbuf->b_fname, IOSIZE - 1);
        }
        len = (int)STRLEN(IObuff);
     }
     else
        len = 0;
-    IObuff[len++] = '|';
+
+    if (len < IOSIZE - 1)
+       IObuff[len++] = '|';
 
     if (qfp->qf_lnum > 0)
     {
-       sprintf((char *)IObuff + len, "%ld", qfp->qf_lnum);
+       vim_snprintf((char *)IObuff + len, IOSIZE - len, "%ld", qfp->qf_lnum);
        len += (int)STRLEN(IObuff + len);
 
        if (qfp->qf_col > 0)
        {
-           sprintf((char *)IObuff + len, " col %d", qfp->qf_col);
+           vim_snprintf((char *)IObuff + len, IOSIZE - len,
+                                                      " col %d", qfp->qf_col);
            len += (int)STRLEN(IObuff + len);
        }
 
-       sprintf((char *)IObuff + len, "%s",
+       vim_snprintf((char *)IObuff + len, IOSIZE - len, "%s",
                (char *)qf_types(qfp->qf_type, qfp->qf_nr));
        len += (int)STRLEN(IObuff + len);
     }
@@ -4463,8 +4466,11 @@ qf_buf_add_line(buf_T *buf, linenr_T lnum, qfline_T *qfp, char_u *dirname)
        qf_fmt_text(qfp->qf_pattern, IObuff + len, IOSIZE - len);
        len += (int)STRLEN(IObuff + len);
     }
-    IObuff[len++] = '|';
-    IObuff[len++] = ' ';
+    if (len < IOSIZE - 2)
+    {
+       IObuff[len++] = '|';
+       IObuff[len++] = ' ';
+    }
 
     // Remove newlines and leading whitespace from the text.
     // For an unrecognized line keep the indent, the compiler may
index 291e2231722571101f63f0095d29bc6873e69a9a..3a9e6720ec5b0bd3b7f076b259154f8804b622ef 100644 (file)
@@ -626,10 +626,15 @@ func s:test_xhelpgrep(cchar)
   let w3 = win_getid()
   call assert_true(&buftype == 'help')
   call assert_true(winnr() == 1)
-  call win_gotoid(w1)
-  call assert_equal(w3, win_getid(winnr('k')))
-  call win_gotoid(w2)
-  call assert_equal(w3, win_getid(winnr('k')))
+  " See jump_to_help_window() for details
+  let w2_width = winwidth(w2)
+  if w2_width != &columns && w2_width < 80
+    call assert_equal(['col', [['leaf', w3],
+          \ ['row', [['leaf', w2], ['leaf', w1]]]]], winlayout())
+  else
+    call assert_equal(['row', [['col', [['leaf', w3], ['leaf', w2]]],
+          \ ['leaf', w1]]] , winlayout())
+  endif
 
   new | only
   set buftype=help
index 17517f5e229de6940a9cbbf75c6d5a8f9146f7f9..bebf220031c504543d6c19ab427df063e24dfd10 100644 (file)
@@ -737,6 +737,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2340,
 /**/
     2339,
 /**/