Patch 8.1.2340
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)
Files:      src/quickfix.c, src/testdir/test_quickfix.vim


*** ../vim-8.1.2339/src/quickfix.c      2019-11-18 22:02:12.808155010 +0100
--- src/quickfix.c      2019-11-24 21:49:54.113014968 +0100
***************
*** 4416,4422 ****
  
      if (qfp->qf_module != NULL)
      {
!       STRCPY(IObuff, qfp->qf_module);
        len = (int)STRLEN(IObuff);
      }
      else if (qfp->qf_fnum != 0
--- 4416,4422 ----
  
      if (qfp->qf_module != NULL)
      {
!       vim_strncpy(IObuff, qfp->qf_module, IOSIZE - 1);
        len = (int)STRLEN(IObuff);
      }
      else if (qfp->qf_fnum != 0
***************
*** 4424,4430 ****
            && errbuf->b_fname != NULL)
      {
        if (qfp->qf_type == 1)  // :helpgrep
!           STRCPY(IObuff, gettail(errbuf->b_fname));
        else
        {
            // shorten the file name if not done already
--- 4424,4430 ----
            && errbuf->b_fname != NULL)
      {
        if (qfp->qf_type == 1)  // :helpgrep
!           vim_strncpy(IObuff, gettail(errbuf->b_fname), IOSIZE - 1);
        else
        {
            // shorten the file name if not done already
***************
*** 4435,4460 ****
                    mch_dirname(dirname, MAXPATHL);
                shorten_buf_fname(errbuf, dirname, FALSE);
            }
!           STRCPY(IObuff, errbuf->b_fname);
        }
        len = (int)STRLEN(IObuff);
      }
      else
        len = 0;
!     IObuff[len++] = '|';
  
      if (qfp->qf_lnum > 0)
      {
!       sprintf((char *)IObuff + len, "%ld", qfp->qf_lnum);
        len += (int)STRLEN(IObuff + len);
  
        if (qfp->qf_col > 0)
        {
!           sprintf((char *)IObuff + len, " col %d", qfp->qf_col);
            len += (int)STRLEN(IObuff + len);
        }
  
!       sprintf((char *)IObuff + len, "%s",
                (char *)qf_types(qfp->qf_type, qfp->qf_nr));
        len += (int)STRLEN(IObuff + len);
      }
--- 4435,4463 ----
                    mch_dirname(dirname, MAXPATHL);
                shorten_buf_fname(errbuf, dirname, FALSE);
            }
!           vim_strncpy(IObuff, errbuf->b_fname, IOSIZE - 1);
        }
        len = (int)STRLEN(IObuff);
      }
      else
        len = 0;
! 
!     if (len < IOSIZE - 1)
!       IObuff[len++] = '|';
  
      if (qfp->qf_lnum > 0)
      {
!       vim_snprintf((char *)IObuff + len, IOSIZE - len, "%ld", qfp->qf_lnum);
        len += (int)STRLEN(IObuff + len);
  
        if (qfp->qf_col > 0)
        {
!           vim_snprintf((char *)IObuff + len, IOSIZE - len,
!                                                      " col %d", qfp->qf_col);
            len += (int)STRLEN(IObuff + len);
        }
  
!       vim_snprintf((char *)IObuff + len, IOSIZE - len, "%s",
                (char *)qf_types(qfp->qf_type, qfp->qf_nr));
        len += (int)STRLEN(IObuff + len);
      }
***************
*** 4463,4470 ****
        qf_fmt_text(qfp->qf_pattern, IObuff + len, IOSIZE - len);
        len += (int)STRLEN(IObuff + len);
      }
!     IObuff[len++] = '|';
!     IObuff[len++] = ' ';
  
      // Remove newlines and leading whitespace from the text.
      // For an unrecognized line keep the indent, the compiler may
--- 4466,4476 ----
        qf_fmt_text(qfp->qf_pattern, IObuff + len, IOSIZE - len);
        len += (int)STRLEN(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
*** ../vim-8.1.2339/src/testdir/test_quickfix.vim       2019-11-24 
12:08:01.113774226 +0100
--- src/testdir/test_quickfix.vim       2019-11-24 21:52:02.276381736 +0100
***************
*** 626,635 ****
    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')))
  
    new | only
    set buftype=help
--- 626,640 ----
    let w3 = win_getid()
    call assert_true(&buftype == 'help')
    call assert_true(winnr() == 1)
!   " 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
*** ../vim-8.1.2339/src/version.c       2019-11-24 12:08:01.117774201 +0100
--- src/version.c       2019-11-24 21:35:35.072988727 +0100
***************
*** 739,740 ****
--- 739,742 ----
  {   /* Add new patch number below this line */
+ /**/
+     2340,
  /**/

-- 
Amnesia is one of my favorite words, but I forgot what it means.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/201911242115.xAOLFkPa022121%40masaka.moolenaar.net.

Raspunde prin e-mail lui