Re: Patch 8.0.0234
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
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
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.