Re: Patch 8.0.0234

2017-01-24 Fir de Conversatie Bram Moolenaar

John Marriott wrote:

> On 25-Jan-2017 05:56, Bram Moolenaar wrote:
> > Patch 8.0.0234 (after 8.0.0225)
> > Problem:When several lines are visually selected and one of them is 
> > short,
> >  using put may cause a crash. (Axel Bender)
> > Solution:   Check for a short line. (Christian Brabandt)
> > Files:  src/ops.c, src/testdir/test_put.vim
> >
> >
> After applying this patch I get this warning from gcc (Mingw64):
> ...
> gcc -c -Iproto -DWIN32 -DWINVER=0x0603 -D_WIN32_WINNT=0x0603 
> -DHAVE_PATHDEF -DFEAT_NORMAL -DHAVE_STDINT_H -DFEAT_GUI_W32
>   -DFEAT_CLIPBOARD -pipe -march=native -Wall -O3 -fomit-frame-pointer 
> -freg-struct-return -s ops.c -o gobjnative/ops.o
> ops.c: In function 'do_put':
> ops.c:3818:29: warning: 'end' may be used uninitialized in this function 
> [-Wmaybe-uninitialized]
>} while (VIsual_active && lnum <= end);
> ~~^~
> ...
> 
> I'm not sure how it should be fixed.

It doesn't understand the condition.  Will have to initialize it.

> Also, in function do_put() I notice that in addition to the variable 
> "end" and there is a goto label with the same name. This could lead to 
> some confusion. Perhaps one should be renamed?

We can rename the variable, the label is used quite a lot.

-- 
[clop clop]
ARTHUR:  Old woman!
DENNIS:  Man!
ARTHUR:  Man, sorry.  What knight lives in that castle over there?
DENNIS:  I'm thirty seven.
ARTHUR:  What?
DENNIS:  I'm thirty seven -- I'm not old!
  The Quest for the Holy Grail (Monty Python)

 /// Bram Moolenaar -- b...@moolenaar.net -- 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 vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Patch 8.0.0234

2017-01-24 Fir de Conversatie John Marriott


On 25-Jan-2017 05:56, Bram Moolenaar wrote:

Patch 8.0.0234 (after 8.0.0225)
Problem:When several lines are visually selected and one of them is short,
 using put may cause a crash. (Axel Bender)
Solution:   Check for a short line. (Christian Brabandt)
Files:  src/ops.c, src/testdir/test_put.vim



After applying this patch I get this warning from gcc (Mingw64):
...
gcc -c -Iproto -DWIN32 -DWINVER=0x0603 -D_WIN32_WINNT=0x0603 
-DHAVE_PATHDEF -DFEAT_NORMAL -DHAVE_STDINT_H -DFEAT_GUI_W32
 -DFEAT_CLIPBOARD -pipe -march=native -Wall -O3 -fomit-frame-pointer 
-freg-struct-return -s ops.c -o gobjnative/ops.o

ops.c: In function 'do_put':
ops.c:3818:29: warning: 'end' may be used uninitialized in this function 
[-Wmaybe-uninitialized]

  } while (VIsual_active && lnum <= end);
   ~~^~
...

I'm not sure how it should be fixed.

Also, in function do_put() I notice that in addition to the variable 
"end" and there is a goto label with the same name. This could lead to 
some confusion. Perhaps one should be renamed?


Cheers
John

--
--
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 vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Patch 8.0.0234

2017-01-24 Fir de Conversatie Bram Moolenaar

Patch 8.0.0234 (after 8.0.0225)
Problem:When several lines are visually selected and one of them is short,
using put may cause a crash. (Axel Bender)
Solution:   Check for a short line. (Christian Brabandt)
Files:  src/ops.c, src/testdir/test_put.vim


*** ../vim-8.0.0233/src/ops.c   2017-01-23 21:53:48.578417996 +0100
--- src/ops.c   2017-01-24 19:29:54.769672745 +0100
***
*** 3774,3789 
 */
if (y_type == MCHAR && y_size == 1)
{
!   linenr_T end = curbuf->b_visual.vi_end.lnum;
  
!   if (curbuf->b_visual.vi_end.lnum < curbuf->b_visual.vi_start.lnum)
!   end = curbuf->b_visual.vi_start.lnum;
  
do {
totlen = count * yanklen;
if (totlen > 0)
{
oldp = ml_get(lnum);
newp = alloc_check((unsigned)(STRLEN(oldp) + totlen + 1));
if (newp == NULL)
goto end;   /* alloc() gave an error message */
--- 3774,3798 
 */
if (y_type == MCHAR && y_size == 1)
{
!   linenr_T end;
  
!   if (VIsual_active)
!   {
!   end = curbuf->b_visual.vi_end.lnum;
!   if (end < curbuf->b_visual.vi_start.lnum)
!   end = curbuf->b_visual.vi_start.lnum;
!   }
  
do {
totlen = count * yanklen;
if (totlen > 0)
{
oldp = ml_get(lnum);
+   if (VIsual_active && col > (int)STRLEN(oldp))
+   {
+   lnum++;
+   continue;
+   }
newp = alloc_check((unsigned)(STRLEN(oldp) + totlen + 1));
if (newp == NULL)
goto end;   /* alloc() gave an error message */
*** ../vim-8.0.0233/src/testdir/test_put.vim2017-01-23 21:53:48.578417996 
+0100
--- src/testdir/test_put.vim2017-01-24 19:22:01.824873262 +0100
***
*** 21,23 
--- 21,36 
call assert_equal(['Xfile_put 1', 'Xfile_put 2'], getline(1,2))
bw!
  endfunc
+ 
+ func Test_put_char_block2()
+   new
+   let a = [ getreg('a'), getregtype('a') ]
+   call setreg('a', ' one ', 'v')
+   call setline(1, ['Line 1', '', 'Line 3', ''])
+   " visually select the first 3 lines and put register a over it
+   exe "norm! ggl\2j2l\"ap"
+   call assert_equal(['L one  1', '', 'L one  3', ''], getline(1,4))
+   " clean up
+   bw!
+   call setreg('a', a[0], a[1])
+ endfunc
*** ../vim-8.0.0233/src/version.c   2017-01-24 19:18:10.386436951 +0100
--- src/version.c   2017-01-24 19:33:17.348302563 +0100
***
*** 766,767 
--- 766,769 
  {   /* Add new patch number below this line */
+ /**/
+ 234,
  /**/

-- 
CUSTOMER: You're not fooling anyone y'know.  Look, isn't there something
  you can do?
DEAD PERSON:  I feel happy... I feel happy.
[whop]
CUSTOMER: Ah, thanks very much.
MORTICIAN:Not at all.  See you on Thursday.
CUSTOMER: Right.
  The Quest for the Holy Grail (Monty Python)

 /// Bram Moolenaar -- b...@moolenaar.net -- 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 vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.