New test problem: test_crash.vim: Found errors in Test_crash1():

2023-09-02 Thread Ernie Rael

New problem? Or is it just me?

-ernie

--
--
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/fe5269d2-49c3-ec72-0477-ce2d8a4c8ea8%40raelity.com.


Typo(s) in channel.txt

2023-09-02 Thread Adri Verhoef
Originally, I reported this back in 2018.  Since then, the documentation 
for job_start() moved from eval.txt to channel.txt and the text that I'm 
describing is still there.


In the documentation for job_start() it shows:

On MS-Windows, job_start() makes a GUI application hidden. If
want to show it, Use |:!start| instead.

Perhaps the last line should read:

you want to show it, use |:!start| instead.

[inserting the word 'you' and changing 'Use' into 'use']


Adri

--
--
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/b2d91e4b-817b-dd62-3753-2a68dae46b35%40a3.xs4all.nl.


Commit: patch 9.0.1853: CI error on different signedness in regexp.c

2023-09-02 Thread Christian Brabandt
patch 9.0.1853: CI error on different signedness in regexp.c

Commit: 
https://github.com/vim/vim/commit/15cbaae31382f17c96a4519e334dd7ba4a90ecba
Author: Christian Brabandt 
Date:   Sat Sep 2 22:08:43 2023 +0200

patch 9.0.1853: CI error on different signedness in regexp.c

Problem:  CI error on different signedness in regexp.c
  (after patch 9.0.1848)
Solution: Cast strlen() call to int

Signed-off-by: Christian Brabandt 

diff --git a/src/regexp.c b/src/regexp.c
index edd1293a5..2c740d303 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -2052,7 +2052,7 @@ vim_regsub_both(
if (copy)
{
if (eval_result[nested] != NULL &&
-   STRLEN(eval_result[nested]) < destlen)
+   (int)STRLEN(eval_result[nested]) < destlen)
{
STRCPY(dest, eval_result[nested]);
dst += STRLEN(eval_result[nested]);
diff --git a/src/version.c b/src/version.c
index 61fe83b78..fe1495ab6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1853,
 /**/
 1852,
 /**/

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcX1N-00CV0n-NS%40256bit.org.


Commit: patch 9.0.1852: i_CTRL-O does not reset Select Mode

2023-09-02 Thread Christian Brabandt
patch 9.0.1852: i_CTRL-O does not reset Select Mode

Commit: 
https://github.com/vim/vim/commit/d69aecf141ff05a645d02f39f1cbf6381ed7d0c0
Author: pierreganty 
Date:   Sat Sep 2 21:59:52 2023 +0200

patch 9.0.1852: i_CTRL-O does not reset Select Mode

Problem:  i_CTRL-O does not reset Select Mode
Solution: Reset select mode on CTRL-O in insert mode

closes: #13001
closes: #12115

Signed-off-by: Christian Brabandt 
Co-authored-by: Christian Brabandt 

diff --git a/src/edit.c b/src/edit.c
index 0c902f895..a51542525 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -3859,6 +3859,7 @@ ins_insert(int replaceState)
 static void
 ins_ctrl_o(void)
 {
+restart_VIsual_select = 0;
 if (State & VREPLACE_FLAG)
restart_edit = 'V';
 else if (State & REPLACE_FLAG)
diff --git a/src/testdir/test_selectmode.vim b/src/testdir/test_selectmode.vim
index 6e2c36927..bf1b52b32 100644
--- a/src/testdir/test_selectmode.vim
+++ b/src/testdir/test_selectmode.vim
@@ -310,4 +310,15 @@ func Test_selectmode_register()
   bw!
 endfunc
 
+func Test_ins_ctrl_o_in_insert_mode_resets_selectmode()
+  new
+  " ctrl-o in insert mode resets restart_VIsual_select
+  call setline(1, 'abcdef')
+  call cursor(1, 1)
+  exe "norm! \\\cIABC"
+  call assert_equal('ABCbcdef', getline(1))
+
+  bwipe!
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 605a61c4f..61fe83b78 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1852,
 /**/
 1851,
 /**/

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcX1L-00CV0I-Ie%40256bit.org.


Commit: patch 9.0.1851: breakindent missing by virt text

2023-09-02 Thread Christian Brabandt
patch 9.0.1851: breakindent missing by virt text

Commit: 
https://github.com/vim/vim/commit/3c3cf1d6892103a1ce6bab7f3546447d85fb5d1c
Author: zeertzjq 
Date:   Sat Sep 2 21:55:00 2023 +0200

patch 9.0.1851: breakindent missing by virt text

Problem:  Virtual text at a column causes 'breakindent' and 'showbreak'
  to be missing (after patch 9.0.1124).
Solution: Add check for "tp_col" in another place where TP_FLAG_WRAP is
  checked.

closes: #12769
closes: #13008
closes: #13010

Signed-off-by: Christian Brabandt 
Co-authored-by: zeertzjq 

diff --git a/src/drawline.c b/src/drawline.c
index edcf55cf3..04e7ed8d5 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -2112,7 +2112,8 @@ win_line(
& TP_FLAG_ALIGN_RIGHT);
int below = (tp->tp_flags
& TP_FLAG_ALIGN_BELOW);
-   int wrap = (tp->tp_flags & TP_FLAG_WRAP);
+   int wrap = tp->tp_col < MAXCOL
+ || (tp->tp_flags & TP_FLAG_WRAP);
int padding = tp->tp_col == MAXCOL
 && tp->tp_len > 1
  ? tp->tp_len - 1 : 0;
diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim
index 736d50bed..106e2e56c 100644
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -1983,7 +1983,7 @@ func Test_prop_with_linebreak()
   set linebreak
   setline(1, 'one twoword')
   prop_type_add('test', {highlight: 'Special'})
-  prop_add(1, 4, {text: ': virtual text', type: 'test', text_wrap: 'wrap'})
+  prop_add(1, 4, {text: ': virtual text', type: 'test'})
   END
   call writefile(lines, 'XscriptPropWithLinebreak', 'D')
   let buf = RunVimInTerminal('-S XscriptPropWithLinebreak', #{rows: 6, cols: 
50})
@@ -2690,7 +2690,7 @@ func Run_test_prop_inserts_text_showbreak(cmd)
 setlocal scrolloff=0 smoothscroll
 call setline(1, repeat('a', 28))
 call prop_type_add('theprop', #{highlight: 'Special'})
-call prop_add(1, 28, #{type: 'theprop', text: repeat('123', 23), 
text_wrap: 'wrap'})
+call prop_add(1, 28, #{type: 'theprop', text: repeat('123', 23)})
 normal! $
   END
   let lines = insert(lines, a:cmd)
@@ -2761,7 +2761,7 @@ func Test_prop_before_tab_skipcol()
 setlocal list listchars=tab:<-> scrolloff=0 smoothscroll
 call setline(1, repeat("   ", 4) .. 'a')
 call prop_type_add('theprop', #{highlight: 'Special'})
-call prop_add(1, 4, #{type: 'theprop', text: repeat('12', 32), text_wrap: 
'wrap'})
+call prop_add(1, 4, #{type: 'theprop', text: repeat('12', 32)})
 normal! $
   END
   call writefile(lines, 'XscriptPropsBeforeTabSkipcol', 'D')
@@ -2798,7 +2798,7 @@ func Test_prop_inserts_text_before_linebreak()
 setlocal linebreak showbreak=+ breakindent breakindentopt=shift:2
 call setline(1, repeat('a', 50) .. ' ' .. repeat('c', 45))
 call prop_type_add('theprop', #{highlight: 'Special'})
-call prop_add(1, 51, #{type: 'theprop', text: repeat('b', 10), text_wrap: 
'wrap'})
+call prop_add(1, 51, #{type: 'theprop', text: repeat('b', 10)})
 normal! $
   END
   call writefile(lines, 'XscriptPropsBeforeLinebreak', 'D')
@@ -3255,8 +3255,8 @@ func Test_props_with_text_empty_line()
   let lines =<< trim END
   call setline(1, ['', 'aaa', '', 'bb'])
   call prop_type_add('prop1', #{highlight: 'Search'})
-  call prop_add(1, 1, #{type: 'prop1', text_wrap: 'wrap', text: 
repeat('X', &columns)})
-  call prop_add(3, 1, #{type: 'prop1', text_wrap: 'wrap', text: 
repeat('X', &columns + 1)})
+  call prop_add(1, 1, #{type: 'prop1', text: repeat('X', &columns)})
+  call prop_add(3, 1, #{type: 'prop1', text: repeat('X', &columns + 1)})
   normal gg0
   END
   call writefile(lines, 'XscriptPropsWithTextEmptyLine', 'D')
diff --git a/src/version.c b/src/version.c
index 517e0504e..605a61c4f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1851,
 /**/
 1850,
 /**/

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcWmt-00CTxc-Nd%40256bit.org.


Commit: patch 9.0.1850: Vim9: wrong line number where options set

2023-09-02 Thread Christian Brabandt
patch 9.0.1850: Vim9: wrong line number where options set

Commit: 
https://github.com/vim/vim/commit/32f3461465a26192172734584c4cbab6e55e2b7f
Author: LemonBoy 
Date:   Sat Sep 2 21:52:05 2023 +0200

patch 9.0.1850: Vim9: wrong line number where options set

Problem:  Vim9: wrong line number where options set
Solution: Set source line number earlier

closes: #13006
closes: #13013

Signed-off-by: Christian Brabandt 
Co-authored-by: LemonBoy 

diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 338167e7b..656185ada 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -4332,6 +4332,23 @@ def Test_option_set()
   set foldlevel&
 enddef
 
+def Test_option_set_line_number()
+  var lines =<< trim END
+  vim9script
+  # line2
+  # line3
+  def F()
+  # line5
+  &foldlevel = -128
+  enddef
+  F()
+  END
+  v9.CheckScriptSuccess(lines)
+
+  var res = execute('verbose set foldlevel')
+  assert_match('  foldlevel.*Last set from .*XScriptSuccess\d\+ line 6', res)
+enddef
+
 def Test_option_modifier()
   # legacy script allows for white space
   var lines =<< trim END
diff --git a/src/version.c b/src/version.c
index c94a450d0..517e0504e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1850,
 /**/
 1849,
 /**/
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 2fbce780f..c29873c89 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -3836,6 +3836,7 @@ exec_instructions(ectx_T *ectx)
char_u  *tofree = NULL;
 
--ectx->ec_stack.ga_len;
+   SOURCING_LNUM = iptr->isn_lnum;
tv = STACK_TV_BOT(0);
if (tv->v_type == VAR_STRING)
{
@@ -3845,7 +3846,6 @@ exec_instructions(ectx_T *ectx)
}
else if (iptr->isn_type == ISN_STOREFUNCOPT)
{
-   SOURCING_LNUM = iptr->isn_lnum;
// If the option can be set to a function reference or
// a lambda and the passed value is a function
// reference, then convert it to the name (string) of

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcWmr-00CTx6-MU%40256bit.org.


Commit: patch 9.0.1849: CI error on different signedness in ex_cmds.c

2023-09-02 Thread Christian Brabandt
patch 9.0.1849: CI error on different signedness in ex_cmds.c

Commit: 
https://github.com/vim/vim/commit/c8a034210f043639f27b6f346c5a9933f17e7159
Author: Christian Brabandt 
Date:   Sat Sep 2 21:48:46 2023 +0200

patch 9.0.1849: CI error on different signedness in ex_cmds.c

Problem:  CI error on different signedness
Solution: cast unsigned to int

Signed-off-by: Christian Brabandt 

diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 53c7bb5a3..4f1d93244 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -4651,7 +4651,7 @@ ex_substitute(exarg_T *eap)
mch_memmove(new_end, sub_firstline + copycol, (size_t)copy_len);
new_end += copy_len;
 
-   if (new_start_len - copy_len < sublen)
+   if ((int)new_start_len - copy_len < sublen)
sublen = new_start_len - copy_len - 1;
 
 #ifdef FEAT_EVAL
diff --git a/src/version.c b/src/version.c
index b69c41068..c94a450d0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1849,
 /**/
 1848,
 /**/

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcWmp-00CTwf-Es%40256bit.org.


Commit: patch 9.0.1848: [security] buffer-overflow in vim_regsub_both()

2023-09-02 Thread Christian Brabandt
patch 9.0.1848: [security] buffer-overflow in vim_regsub_both()

Commit: 
https://github.com/vim/vim/commit/ced2c7394aafdc90fb7845e09b3a3fee23d48cb1
Author: Christian Brabandt 
Date:   Sat Sep 2 21:15:52 2023 +0200

patch 9.0.1848: [security] buffer-overflow in vim_regsub_both()

Problem:  buffer-overflow in vim_regsub_both()
Solution: Check remaining space

Signed-off-by: Christian Brabandt 

diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index c30b6fddf..53c7bb5a3 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -4651,6 +4651,9 @@ ex_substitute(exarg_T *eap)
mch_memmove(new_end, sub_firstline + copycol, (size_t)copy_len);
new_end += copy_len;
 
+   if (new_start_len - copy_len < sublen)
+   sublen = new_start_len - copy_len - 1;
+
 #ifdef FEAT_EVAL
++textlock;
 #endif
diff --git a/src/regexp.c b/src/regexp.c
index 9c576c689..edd1293a5 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -2051,7 +2051,8 @@ vim_regsub_both(
// "flags & REGSUB_COPY" != 0.
if (copy)
{
-   if (eval_result[nested] != NULL)
+   if (eval_result[nested] != NULL &&
+   STRLEN(eval_result[nested]) < destlen)
{
STRCPY(dest, eval_result[nested]);
dst += STRLEN(eval_result[nested]);
diff --git a/src/testdir/crash/vim_regsub_both 
b/src/testdir/crash/vim_regsub_both
new file mode 100644
index 0..a82b205c8
--- /dev/null
+++ b/src/testdir/crash/vim_regsub_both
@@ -0,0 +1,10 @@
+fu R()
+sil!norm0z=  
+endf
+cal R()
+s/\%')/\=R()
+d
+no0 norm yynore sm:vs0@vvse()dir(¼Xtest=csd{so88
+vs
+0scr
+so
diff --git a/src/testdir/test_crash.vim b/src/testdir/test_crash.vim
index 0dea3c2cb..445fe8d5a 100644
--- a/src/testdir/test_crash.vim
+++ b/src/testdir/test_crash.vim
@@ -6,7 +6,7 @@ CheckScreendump
 
 func Test_crash1()
   " The following used to crash Vim
-  let opts = #{wait_for_ruler: 0}
+  let opts = #{wait_for_ruler: 0, rows: 20}
   let args = ' -u NONE -i NONE -n -e -s -S '
   let buf = RunVimInTerminal(args .. ' crash/poc_huaf1', opts)
   call VerifyScreenDump(buf, 'Test_crash_01', {})
@@ -22,4 +22,13 @@ func Test_crash1()
 
 endfunc
 
+func Test_crash2()
+  " The following used to crash Vim
+  let opts = #{wait_for_ruler: 0, rows: 20}
+  let args = ' -u NONE -i NONE -n -e -s -S '
+  let buf = RunVimInTerminal(args .. ' crash/vim_regsub_both', opts)
+  call VerifyScreenDump(buf, 'Test_crash_01', {})
+  exe buf .. "bw!"
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index c638a107e..b69c41068 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1848,
 /**/
 1847,
 /**/

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcWYJ-00CSrT-IS%40256bit.org.


Re: vim9class: accessing statics from outside the class

2023-09-02 Thread Yegappan Lakshmanan
On Sat, Sep 2, 2023 at 9:31 AM Ernie Rael  wrote:

> AFAICT, it doesn't work. Is anyone working on this?
>
> I've run into it while working https://github.com/vim/vim/pull/13007.
>
> I am taking a look, but I don't want duplicate efforts.
>

I am not working on this.

- Yegappan

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/CAAW7x7nTYsQd9XDGLGYdAq%2BHSMuQ1jVqbpmbu66t8pNMFZCNGw%40mail.gmail.com.


Commit: patch 9.0.1847: [security] potential oob write in do_addsub()

2023-09-02 Thread Christian Brabandt
patch 9.0.1847: [security] potential oob write in do_addsub()

Commit: 
https://github.com/vim/vim/commit/889f6af37164775192e33b233a90e86fd3df0f57
Author: Christian Brabandt 
Date:   Sat Sep 2 19:43:33 2023 +0200

patch 9.0.1847: [security] potential oob write in do_addsub()

Problem:  potential oob write in do_addsub()
Solution: don't overflow buf2, check size in for loop()

Signed-off-by: Christian Brabandt 

diff --git a/src/ops.c b/src/ops.c
index d46a049fe..f4524d3d7 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2919,7 +2919,7 @@ do_addsub(
for (bit = bits; bit > 0; bit--)
if ((n >> (bit - 1)) & 0x1) break;
 
-   for (i = 0; bit > 0; bit--)
+   for (i = 0; bit > 0 && i < (NUMBUFLEN - 1); bit--)
buf2[i++] = ((n >> (bit - 1)) & 0x1) ? '1' : '0';
 
buf2[i] = '
diff --git a/src/version.c b/src/version.c
index 5cde7c185..c638a107e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1847,
 /**/
 1846,
 /**/

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcUug-00CMOu-NN%40256bit.org.


Commit: patch 9.0.1846: [security] crash in fullcommand

2023-09-02 Thread Christian Brabandt
patch 9.0.1846: [security] crash in fullcommand

Commit: 
https://github.com/vim/vim/commit/4c6fe2e2ea62469642ed1d80b16d39e616b25cf5
Author: Christian Brabandt 
Date:   Sat Sep 2 19:30:03 2023 +0200

patch 9.0.1846: [security] crash in fullcommand

Problem:  crash in fullcommand
Solution: Check for typeval correctly

Signed-off-by: Christian Brabandt 

diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 32d52ab21..10d979d49 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4087,7 +4087,7 @@ f_fullcommand(typval_T *argvars, typval_T *rettv)
|| check_for_opt_bool_arg(argvars, 1) == FAIL))
return;
 
-name = argvars[0].vval.v_string;
+name = tv_get_string(&argvars[0]);
 if (name == NULL)
return;
 
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 0eda5de38..ab1dbf3b5 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -3607,4 +3607,9 @@ func Test_string_reverse()
   let &encoding = save_enc
 endfunc
 
+func Test_fullcommand()
+  " this used to crash vim
+  call assert_equal('', fullcommand(10))
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 3de6046ff..5cde7c185 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1846,
 /**/
 1845,
 /**/

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcUgB-00CLN4-RL%40256bit.org.


Commit: patch 9.0.1845: xxd: Test_xxd_color start failing

2023-09-02 Thread Christian Brabandt
patch 9.0.1845: xxd: Test_xxd_color start failing

Commit: 
https://github.com/vim/vim/commit/e0bfb7d3016ccd6c2186b9cd74cee6538eea9b5e
Author: Christian Brabandt 
Date:   Sat Sep 2 19:12:31 2023 +0200

patch 9.0.1845: xxd: Test_xxd_color start failing

Problem:  xxd: Test_xxd_color start failing
Solution: Revert changes to dump file

Signed-off-by: Christian Brabandt 

diff --git a/src/testdir/dumps/Test_xxd_color_1.dump 
b/src/testdir/dumps/Test_xxd_color_1.dump
index 38908618f..da6282104 100644
--- a/src/testdir/dumps/Test_xxd_color_1.dump
+++ b/src/testdir/dumps/Test_xxd_color_1.dump
@@ -14,3 +14,7 @@
 |0@5|d|0|:| |d+2#e02&|0|d|1| +0#000&|d+2#e02&|2|d|3| 
+0#000&|d+2#e02&|4|d|5| +0#000&|d+2#e02&|6|d|7| 
+0#000&|d+2#e02&|8|d|9| +0#000&|d+2#e02&|a|d|b| 
+0#000&|d+2#e02&|c|d@1| +0#000&|d+2#e02&|e|d|f| 
+0#000&@1|.+2#e02&@15| +0#000&@7
 |0@5|e|0|:| |e+2#e02&|0|e|1| +0#000&|e+2#e02&|2|e|3| 
+0#000&|e+2#e02&|4|e|5| +0#000&|e+2#e02&|6|e|7| 
+0#000&|e+2#e02&|8|e|9| +0#000&|e+2#e02&|a|e|b| 
+0#000&|e+2#e02&|c|e|d| +0#000&|e+2#e02&@2|f| 
+0#000&@1|.+2#e02&@15| +0#000&@7
 |0@5|f|0|:| |f+2#e02&|0|f|1| +0#000&|f+2#e02&|2|f|3| 
+0#000&|f+2#e02&|4|f|5| +0#000&|f+2#e02&|6|f|7| 
+0#000&|f+2#e02&|8|f|9| +0#000&|f+2#e02&|a|f|b| 
+0#000&|f+2#e02&|c|f|d| +0#000&|f+2#e02&|e|f+2#e05&@1| 
+0#000&@1|.+2#e02&@14|.+2#e05&| +0#000&@7
+|$| > @72
+@75
+@75
+@75
diff --git a/src/testdir/dumps/Test_xxd_color_1.vim 
b/src/testdir/dumps/Test_xxd_color_1.vim
index bc6226ad2..daf8dd390 100644
--- a/src/testdir/dumps/Test_xxd_color_1.vim
+++ b/src/testdir/dumps/Test_xxd_color_1.vim
@@ -1,3 +1,3 @@
 " Filter that removes the Shell Prompt from the xxd command
-18,20d
+" 18,20d
 :1s#|\$+0&\#ff0| |.@1|/|x@1|d|/|x@1|d|.*
#|$+0\&\#ff0| #e
diff --git a/src/version.c b/src/version.c
index 81bee3839..3de6046ff 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1845,
 /**/
 1844,
 /**/

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcUD9-00CJVI-AF%40256bit.org.


Re: vim9class: accessing statics from outside the class

2023-09-02 Thread Doug Kearns
On Sun, 3 Sept 2023 at 02:31, Ernie Rael  wrote:

> AFAICT, it doesn't work. Is anyone working on this?
>
> I've run into it while working https://github.com/vim/vim/pull/13007.
>
> I am taking a look, but I don't want duplicate efforts.
>

You can read them and write them at top-level but, from a quick test, only
read them within a class definition.

I am not looking into this at the moment.

Regards,
Doug

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/CAJ1uvoDHR59Yby1nGBa%3DXarJr7-x3QAEEcwxsvBdTXiv5QuDwQ%40mail.gmail.com.


vim9class: accessing statics from outside the class

2023-09-02 Thread Ernie Rael

AFAICT, it doesn't work. Is anyone working on this?

I've run into it while working https://github.com/vim/vim/pull/13007.

I am taking a look, but I don't want duplicate efforts.

-ernie

--
--
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/49ac7706-b556-0166-984c-54598cf25d51%40raelity.com.


Commit: patch 9.0.1844: doc helptags may not be up to date

2023-09-02 Thread Christian Brabandt
patch 9.0.1844: doc helptags may not be up to date

Commit: 
https://github.com/vim/vim/commit/8b202031412a5de43a9c8257118ff99a018afabf
Author: Yee Cheng Chin 
Date:   Sat Sep 2 16:03:04 2023 +0200

patch 9.0.1844: doc helptags may not be up to date

Problem:  doc helptags may not be up to date
Solution: Add CI jobs to verify helptags are updated

Also, re-generate the tags file with updated list so it will pass CI.

closes: #13012

Signed-off-by: Christian Brabandt 

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 078e12cb2..036b36a39 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -242,6 +242,12 @@ jobs:
   do_test() { sg audio "sg $(id -gn) '$*'"; }
   do_test make ${SHADOWOPT} ${TEST}
 
+  - name: Vim tags
+if: contains(matrix.extra, 'vimtags')
+run: |
+  # This will exit with an error code if the generated vim tags 
differs from source.
+  git diff --exit-code -- runtime/doc/tags
+
   - name: Generate gcov files
 if: matrix.coverage
 run: |
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 8ee17028d..b390ef470 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4442,6 +4442,7 @@ E1362 vim9class.txt   /*E1362*
 E1363  vim9class.txt   /*E1363*
 E1364  recover.txt /*E1364*
 E137   starting.txt/*E137*
+E1370  vim9class.txt   /*E1370*
 E138   starting.txt/*E138*
 E139   message.txt /*E139*
 E140   message.txt /*E140*
@@ -8031,6 +8032,7 @@ i_CTRL-O  insert.txt  /*i_CTRL-O*
 i_CTRL-P   insert.txt  /*i_CTRL-P*
 i_CTRL-Q   insert.txt  /*i_CTRL-Q*
 i_CTRL-R   insert.txt  /*i_CTRL-R*
+i_CTRL-R_- insert.txt  /*i_CTRL-R_-*
 i_CTRL-R_= insert.txt  /*i_CTRL-R_=*
 i_CTRL-R_CTRL-Oinsert.txt  /*i_CTRL-R_CTRL-O*
 i_CTRL-R_CTRL-Pinsert.txt  /*i_CTRL-R_CTRL-P*
diff --git a/src/version.c b/src/version.c
index ae2886484..81bee3839 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1844,
 /**/
 1843,
 /**/

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcROz-00C8QP-T3%40256bit.org.


Commit: patch 9.0.1843: xxd color test flaky

2023-09-02 Thread Christian Brabandt
patch 9.0.1843: xxd color test flaky

Commit: 
https://github.com/vim/vim/commit/b2422f75408a41c77620c0d0f956b9728810c6ef
Author: Christian Brabandt 
Date:   Sat Sep 2 16:01:18 2023 +0200

patch 9.0.1843: xxd color test flaky

Problem:  xxd color test flaky
Solution: Filter unneeded lines

Signed-off-by: Christian Brabandt 

diff --git a/src/testdir/dumps/Test_xxd_color_1.dump 
b/src/testdir/dumps/Test_xxd_color_1.dump
index da6282104..38908618f 100644
--- a/src/testdir/dumps/Test_xxd_color_1.dump
+++ b/src/testdir/dumps/Test_xxd_color_1.dump
@@ -14,7 +14,3 @@
 |0@5|d|0|:| |d+2#e02&|0|d|1| +0#000&|d+2#e02&|2|d|3| 
+0#000&|d+2#e02&|4|d|5| +0#000&|d+2#e02&|6|d|7| 
+0#000&|d+2#e02&|8|d|9| +0#000&|d+2#e02&|a|d|b| 
+0#000&|d+2#e02&|c|d@1| +0#000&|d+2#e02&|e|d|f| 
+0#000&@1|.+2#e02&@15| +0#000&@7
 |0@5|e|0|:| |e+2#e02&|0|e|1| +0#000&|e+2#e02&|2|e|3| 
+0#000&|e+2#e02&|4|e|5| +0#000&|e+2#e02&|6|e|7| 
+0#000&|e+2#e02&|8|e|9| +0#000&|e+2#e02&|a|e|b| 
+0#000&|e+2#e02&|c|e|d| +0#000&|e+2#e02&@2|f| 
+0#000&@1|.+2#e02&@15| +0#000&@7
 |0@5|f|0|:| |f+2#e02&|0|f|1| +0#000&|f+2#e02&|2|f|3| 
+0#000&|f+2#e02&|4|f|5| +0#000&|f+2#e02&|6|f|7| 
+0#000&|f+2#e02&|8|f|9| +0#000&|f+2#e02&|a|f|b| 
+0#000&|f+2#e02&|c|f|d| +0#000&|f+2#e02&|e|f+2#e05&@1| 
+0#000&@1|.+2#e02&@14|.+2#e05&| +0#000&@7
-|$| > @72
-@75
-@75
-@75
diff --git a/src/testdir/dumps/Test_xxd_color_1.vim 
b/src/testdir/dumps/Test_xxd_color_1.vim
new file mode 100644
index 0..bc6226ad2
--- /dev/null
+++ b/src/testdir/dumps/Test_xxd_color_1.vim
@@ -0,0 +1,3 @@
+" Filter that removes the Shell Prompt from the xxd command
+18,20d
+:1s#|\$+0&\#ff0| |.@1|/|x@1|d|/|x@1|d|.*
#|$+0\&\#ff0| #e
diff --git a/src/testdir/test_xxd.vim b/src/testdir/test_xxd.vim
index 66ffa54ad..437437ebc 100644
--- a/src/testdir/test_xxd.vim
+++ b/src/testdir/test_xxd.vim
@@ -577,6 +577,7 @@ func Test_xxd_color2()
 
   call system(s:xxd_cmd .. ' -r < Xinput > XXDfile_colors')
 
+  let $PS1='$ '
   let buf = RunVimInTerminal('', #{rows: 20, cmd: 'sh'})
   call term_sendkeys(buf,  s:xxd_cmd .. " -R never  < XXDfile_colors\")
   call TermWait(buf)
@@ -591,5 +592,6 @@ func Test_xxd_color2()
   call term_sendkeys(buf,  "exit\")
 
   call delete('XXDfile_colors')
+  unlet! $PS1
 endfunc
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index a09c72513..ae2886484 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1843,
 /**/
 1842,
 /**/

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcROx-00C8Pv-MQ%40256bit.org.


Re: Commit: patch 9.0.1842: Need more accurate profiling

2023-09-02 Thread Ernie Rael

On 23/09/02 6:15 AM, Christian Brabandt wrote:

patch 9.0.1842: Need more accurate profiling

Commit:https://github.com/vim/vim/commit/21d3212361f687704acb52cad7c1b9228e7c83f0
Author: Ernie Rael
Date:   Sat Sep 2 15:09:18 2023 +0200

 patch 9.0.1842: Need more accurate profiling
 
 Problem:  Need more accurate profiling

 Solution: Improve profiling results
 
 closes: #12192


The tables such as

   |=== assign micro-prof === 50-100 100-50 200-2 : nLoops-nKeys
   (usec/op) 0.036 0.040 0.039 : var local = n_value ###-A 0.037 0.035
   0.034 : local = C.static_var ###-D 0.059 0.055 0.050 : local =
   a_class.this_var ###-G 0.180 0.173 0.170 : local = a_class.Getter()
   ###-J|

Are produced by vim9script import and shell/gawk scripts found at

   https://github.com/errael/vim-microprof

The docs are minimal. If there is interest, the docs can be expanded. 
Otherwise it's there as is.


-ernie

--
--
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/6aa825db-71b3-c56d-11e8-f64b4afc3251%40raelity.com.


Re: Commit: patch 9.0.1833: [security] runtime file fixes

2023-09-02 Thread Christian Brabandt


On Sa, 02 Sep 2023, Anton Sharonov wrote:
> Just to point out to one (probably not so desired?) sideffect:
> after this patch my &path do not contain any of the @INC
> directories of perl, if vim was started from /usr/bin (where
> _real_ perl executable is sitting).

Yes, I am aware of this. But I don't have a good solution to this 
currently.

I am thinking to make the whole thing of running executables from 
filetype plugins opt-in for users and have it default off.

Thanks,
Christian
-- 
Maybe Computer Science should be in the College of Theology.
-- R. S. Barton

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/ZPM95nwu/OJiJZcn%40256bit.org.


Commit: translation(it): updated Italian xxd manpage

2023-09-02 Thread Christian Brabandt
translation(it): updated Italian xxd manpage

Commit: 
https://github.com/vim/vim/commit/67b0ecf754565ff4c09a1128677e9c6e83fcc1c2
Author: Antonio Giovanni Colombo 
Date:   Sat Sep 2 15:11:58 2023 +0200

translation(it): updated Italian xxd manpage

Signed-off-by: Christian Brabandt 

diff --git a/runtime/doc/xxd-it.1 b/runtime/doc/xxd-it.1
index 29f115b81..3c9c4404b 100755
--- a/runtime/doc/xxd-it.1
+++ b/runtime/doc/xxd-it.1
@@ -134,9 +134,9 @@ per leggere dump in stile esadecimale semplice, senza 
l'informazione del numero
 di riga e senza un particolare tracciato di colonna.  Spazi o righe vuote 
possono
 essere presenti [e vengono ignorati].
 .TP
-.IR \-R " "[QUANDO]
+.IR \-R " "[quando]
 Nell'output i valori esadecimali e i caratteri corrispondenti hanno entrambi 
lo stesso colore, a seconda del valore esadecimale. Utile soprattutto a 
distinguere i caratteri stampabili da quello non stampabili.
-.I QUANDO
+.I quando
 può assumere i valori
 .BR never ", " always ", o " auto .
 .TP
diff --git a/runtime/doc/xxd-it.UTF-8.1 b/runtime/doc/xxd-it.UTF-8.1
old mode 100644
new mode 100755
index 5be512639..faa39f5bf
--- a/runtime/doc/xxd-it.UTF-8.1
+++ b/runtime/doc/xxd-it.UTF-8.1
@@ -134,6 +134,12 @@ per leggere dump in stile esadecimale semplice, senza 
l'informazione del numero
 di riga e senza un particolare tracciato di colonna.  Spazi o righe vuote 
possono
 essere presenti [e vengono ignorati].
 .TP
+.IR \-R " "[quando]
+Nell'output i valori esadecimali e i caratteri corrispondenti hanno entrambi 
lo stesso colore, a seconda del valore esadecimale. Utile soprattutto a 
distinguere i caratteri stampabili da quello non stampabili.
+.I quando
+può assumere i valori
+.BR never ", " always ", o " auto .
+.TP
 .I \-seek distanza
 Usato con l'opzione
 .IR \-r :

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcQSz-00C4cH-KM%40256bit.org.


Commit: patch 9.0.1842: Need more accurate profiling

2023-09-02 Thread Christian Brabandt
patch 9.0.1842: Need more accurate profiling

Commit: 
https://github.com/vim/vim/commit/21d3212361f687704acb52cad7c1b9228e7c83f0
Author: Ernie Rael 
Date:   Sat Sep 2 15:09:18 2023 +0200

patch 9.0.1842: Need more accurate profiling

Problem:  Need more accurate profiling
Solution: Improve profiling results

closes: #12192

Reduce overhead of checking if a function should be profiled,
by caching results of checking (which are done with regexp).

Cache uf_hash for uf_name in ufunc_T.

Cache cleared when regexps are changed.

Break at first match for has_profiling lookup.

Signed-off-by: Christian Brabandt 
Co-authored-by: Ernie Rael 

diff --git a/src/debugger.c b/src/debugger.c
index 393e11e41..66647ab46 100644
--- a/src/debugger.c
+++ b/src/debugger.c
@@ -528,6 +528,35 @@ static int has_expr_breakpoint = FALSE;
 #ifdef FEAT_PROFILE
 // Profiling uses file and func names similar to breakpoints.
 static garray_T prof_ga = {0, 0, sizeof(struct debuggy), 4, NULL};
+
+// Profiling caches results of regexp lookups for function/script name.
+#define N_PROF_HTAB 2
+static hashtab_T prof_cache[N_PROF_HTAB];
+#define PROF_HTAB_FUNCS 0
+#define PROF_HTAB_FILES 1
+static int prof_cache_initialized;
+typedef struct profentry_S
+{
+charpen_flags; // cache data booleans: profiling, forceit
+char_u  pen_name[1]; // actually longer
+} profentry_T;
+#define PEN_FLAG_PROFILING 1
+#define PEN_FLAG_FORCEIT 2
+#define PEN_SET_PROFILING(pe) ((pe)->pen_flags |= PEN_FLAG_PROFILING)
+#define PEN_SET_FORCEIT(pe) ((pe)->pen_flags |= PEN_FLAG_FORCEIT)
+#define PEN_IS_PROFILING(pe) (((pe)->pen_flags & PEN_FLAG_PROFILING) != 0)
+#define PEN_IS_FORCEIT(pe) (((pe)->pen_flags & PEN_FLAG_FORCEIT) != 0)
+
+#define PE2HIKEY(pe)   ((pe)->pen_name)
+#define HIKEY2PE(p)((profentry_T *)((p) - (offsetof(profentry_T, 
pen_name
+#define HI2PE(hi)  HIKEY2PE((hi)->hi_key)
+
+static void prof_clear_cache(void);
+#define PROF_CLEAR_CACHE(gap) do {if ((gap) == &prof_ga) prof_clear_cache();} 
while (0)
+// Can enable to get some info about profile caching
+// #define PROF_CACHE_LOG
+#else
+#define PROF_CLEAR_CACHE(gap) do {} while (0)
 #endif
 #define DBG_FUNC   1
 #define DBG_FILE   2
@@ -708,6 +737,7 @@ ex_breakadd(exarg_T *eap)
++debug_tick;
}
++gap->ga_len;
+   PROF_CLEAR_CACHE(gap);
}
 }
 else
@@ -845,6 +875,7 @@ ex_breakdel(exarg_T *eap)
if (!del_all)
break;
 }
+PROF_CLEAR_CACHE(gap);
 
 // If all breakpoints were removed clear the array.
 if (gap->ga_len == 0)
@@ -899,17 +930,102 @@ dbg_find_breakpoint(
 }
 
 #if defined(FEAT_PROFILE) || defined(PROTO)
+#if defined(PROF_CACHE_LOG)
+static int count_lookups[2];
+#endif
 /*
  * Return TRUE if profiling is on for a function or sourced file.
+ * Cache the results of debuggy_find().
+ * Cache is cleared whenever prof_ga.ga_len is changed.
  */
 int
 has_profiling(
 intfile,   // TRUE for a file, FALSE for a function
 char_u *fname, // file or function name
-int*fp)// return: forceit
+int*fp,// return: forceit
+hash_T *hashp) // use/return fname hash, may be NULL
 {
-return (debuggy_find(file, fname, (linenr_T)0, &prof_ga, fp)
- != (linenr_T)0);
+if (prof_ga.ga_len == 0 || !prof_cache_initialized)
+   return debuggy_find(file, fname, (linenr_T)0, &prof_ga, fp)
+!= (linenr_T)0;
+
+hash_T hash;
+if (hashp != NULL)
+{
+   hash = *hashp;
+   if (hash == 0)
+   {
+   hash = hash_hash(fname);
+   *hashp = hash;
+   }
+}
+else
+   hash = hash_hash(fname);
+
+hashtab_T *ht = &prof_cache[file ? PROF_HTAB_FILES : PROF_HTAB_FUNCS];
+hashitem_T *hi = hash_lookup(ht, fname, hash);
+profentry_T *pe;
+if (HASHITEM_EMPTY(hi))
+{
+   pe = alloc(offsetof(profentry_T, pen_name) + STRLEN(fname) + 1);
+   if (pe == NULL)
+   return FALSE;
+   STRCPY(pe->pen_name, fname);
+   pe->pen_flags = 0;
+   // run debuggy_find and capture return and forceit
+   int f;
+   int lnum = debuggy_find(file, fname, (linenr_T)0, &prof_ga, &f);
+   if (lnum)
+   {
+   PEN_SET_PROFILING(pe);
+   if (f)
+   PEN_SET_FORCEIT(pe);
+   }
+   hash_add_item(ht, hi, pe->pen_name, hash);
+#if defined(PROF_CACHE_LOG)
+   ch_log(NULL, "has_profiling: %s %s forceit %s, profile %s",
+  file ? "file" : "func", fname,
+  PEN_IS_FORCEIT(pe) ? "true" : "false",
+  PEN_IS_PROFILING(pe) ? "true" : "false");
+#endif
+}
+else
+   pe = HI2PE(hi);
+if (fp)
+   *fp = PEN_IS_FORCEIT(pe);
+#if defined(PROF_CACHE_LOG)
+  

Commit: patch 9.0.1841: style: trailing whitespace in ex_cmds.c

2023-09-02 Thread Christian Brabandt
patch 9.0.1841: style: trailing whitespace in ex_cmds.c

Commit: 
https://github.com/vim/vim/commit/9d093fd05626aa19e5d9ff6d4b738a0f8f5deccb
Author: Christian Brabandt 
Date:   Sat Sep 2 15:07:24 2023 +0200

patch 9.0.1841: style: trailing whitespace in ex_cmds.c

Problem:  style: trailing whitespace in ex_cmds.c
Solution: remove it

Signed-off-by: Christian Brabandt 

diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 9348b4edd..c30b6fddf 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2646,11 +2646,11 @@ do_ecmd(
goto theend;
 }
 
-
+
  // End Visual mode before switching to another buffer, so the text can be
  // copied into the GUI selection buffer.
  // Careful: may trigger ModeChanged() autocommand
- 
+
 // Should we block autocommands here?
 reset_VIsual();
 
diff --git a/src/version.c b/src/version.c
index 34878d749..7fd2ebcac 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+1841,
 /**/
 1840,
 /**/

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1qcQSu-00C4b7-Iw%40256bit.org.


Commit: translation(en_GB): Update UK English translation (#13011)

2023-09-02 Thread Christian Brabandt
translation(en_GB): Update UK English translation (#13011)

Commit: 
https://github.com/vim/vim/commit/397e356d7b7693d06caacb08b28f219c6d69e36a
Author: Mike Williams 
Date:   Sat Sep 2 14:04:51 2023 +0100

translation(en_GB): Update UK English translation 
(https://github.com/vim/vim/issues/13011)

Signed-off-by: Christian Brabandt 

diff --git a/src/po/en_GB.po b/src/po/en_GB.po
index 239be0f6a..c03766112 100644
--- a/src/po/en_GB.po
+++ b/src/po/en_GB.po
@@ -3,17 +3,21 @@
 # Do ":help uganda"  in Vim to read copying and usage conditions.
 # Do ":help credits" in Vim to see a list of people who contributed.
 #
-# FIRST AUTHOR Mike Williams , 2003.
+# FIRST AUTHOR Mike Williams , 2003.
 #
 # Style Guide:
 # o English spelling!
 # o Colour, not color
+# o -iour, not -ior
 # o -ise, not -ize.
 # o No contractions.
 # o Cannot, not can not.
+# o White space, not whitespace
 # o Backward (no s) when used as an adjective.
-# o Consistent capitalisation for first word after Ennn:
-# o Consistent capitalisation of NetBeans and JSON
+# o Command line for noun, command-line for adjective
+# o Improve consistency of messages ...
+# o - capitalisation for first English word after Ennn:
+# o - capitalisation of: NetBeans, JSON, Python, Lisp, Cscope
 # o TBC ...
 #
 # As with all guides, they should be followed unless there is a reason why they
@@ -21,12 +25,12 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Vim 8.2 (UK English)
"
+"Project-Id-Version: Vim 9.0 (UK English)
"
 "Report-Msgid-Bugs-To: 
"
-"POT-Creation-Date: 2022-05-11 17:36+1000
"
+"POT-Creation-Date: 2023-08-28 09:49+0100
"
 "PO-Revision-Date: 2022-05-12 10:05+1000
"
 "Last-Translator: Doug Kearns 
"
-"Language-Team: Mike Williams 
"
+"Language-Team: Mike Williams 
"
 "Language: en_GB
"
 "MIME-Version: 1.0
"
 "Content-Type: text/plain; charset=ISO-8859-1
"
@@ -56,12 +60,22 @@ msgstr "Cannot find temp file for conversion"
 msgid "can't read output of 'charconvert'"
 msgstr "cannot read output of 'charconvert'"
 
-msgid "cscope connection %s closed"
-msgstr "Cscope connection %s closed"
+#, c-format
+msgid "Added cscope database %s"
+msgstr "Added Cscope database %s"
+
+msgid "All cscope databases reset"
+msgstr "All Cscope databases reset"
+
+msgid "no cscope connections
"
+msgstr "no Cscope connections
"
 
 msgid "couldn't open buffer"
 msgstr "could not open buffer"
 
+msgid " Command-line completion (^V^N^P)"
+msgstr " Command line completion (^V^N^P)"
+
 msgid "netbeans is not supported with this GUI
"
 msgstr "NetBeans is not supported with this GUI
"
 
@@ -95,7 +109,7 @@ msgid "+reverse  Don't use reverse video (also: 
+rv)"
 msgstr "+reverse   Do not use reverse video (also: +rv)"
 
 msgid "Messages maintainer: The Vim Project"
-msgstr "Messages maintainer: Mike Williams "
+msgstr "Messages maintainer: Mike Williams "
 
 msgid "VIM: Can't open window!
"
 msgstr "VIM: Cannot open window!
"
@@ -140,11 +154,11 @@ msgstr "E166: Cannot open linked file for writing"
 msgid "E185: Cannot find color scheme '%s'"
 msgstr "E185: Cannot find colour scheme '%s'"
 
-msgid "E205: Patchmode: Can't save original file"
-msgstr "E205: Patchmode: Cannot save original file"
+msgid "E205: Patchmode: can't save original file"
+msgstr "E205: Patchmode: cannot save original file"
 
-msgid "E206: Patchmode: Can't touch empty original file"
-msgstr "E206: Patchmode: Cannot touch empty original file"
+msgid "E206: Patchmode: can't touch empty original file"
+msgstr "E206: Patchmode: cannot touch empty original file"
 
 msgid "E207: Can't delete backup file"
 msgstr "E207: Cannot delete backup file"
@@ -158,6 +172,9 @@ msgstr "E214: Cannot find temp file for writing"
 msgid "E217: Can't execute autocommands for ALL events"
 msgstr "E217: Cannot execute autocommands for ALL events"
 
+msgid "E242: Can't split a window while closing another"
+msgstr "E242: Cannot split a window while closing another"
+
 #, c-format
 msgid "E254: Cannot allocate color %s"
 msgstr "E254: Cannot allocate colour %s"
@@ -165,24 +182,20 @@ msgstr "E254: Cannot allocate colour %s"
 msgid "E255: Couldn't read in sign data"
 msgstr "E255: Could not read in sign data"
 
+#, c-format
+msgid "E259: No matches found for cscope query %s of %s"
+msgstr "E259: No matches found for Cscope query %s of %s"
+
+#, c-format
+msgid "E262: Error reading cscope connection %d"
+msgstr "E262: Error reading Cscope connection %d"
+
 msgid "E288: Input method doesn't support any style"
 msgstr "E288: Input method does not support any style"
 
 msgid "E289: Input method doesn't support my preedit type"
 msgstr "E289: Input method does not support my preedit type"
 
-msgid "E298: Didn't get block nr 0?"
-msgstr "E298: Did not get block nr 0?"
-
-msgid "E298: Didn't get block nr 1?"
-msgstr "E298: Did not get block nr 1?"
-
-msgid "E298: Didn't get block nr 2?"
-msgstr "E298: Did not get block nr 2?"
-
-msgid "E304: ml_upd_block0(): Didn't get block 0??"
-msgstr "E304: ml_upd_block0(): Did

Commit: patch 9.0.1840: [security] use-after-free in do_ecmd

2023-09-02 Thread Christian Brabandt
patch 9.0.1840: [security] use-after-free in do_ecmd

Commit: 
https://github.com/vim/vim/commit/e1dc9a627536304bc4f738c21e909ad9fcf3974c
Author: Christian Brabandt 
Date:   Sat Sep 2 14:40:13 2023 +0200

patch 9.0.1840: [security] use-after-free in do_ecmd

Problem:  use-after-free in do_ecmd
Solution: Verify oldwin pointer after reset_VIsual()

Signed-off-by: Christian Brabandt 

diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 20d4d9a2e..9348b4edd 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2646,12 +2646,18 @@ do_ecmd(
goto theend;
 }
 
-/*
- * End Visual mode before switching to another buffer, so the text can be
- * copied into the GUI selection buffer.
- */
+
+ // End Visual mode before switching to another buffer, so the text can be
+ // copied into the GUI selection buffer.
+ // Careful: may trigger ModeChanged() autocommand
+ 
+// Should we block autocommands here?
 reset_VIsual();
 
+// autocommands freed window :(
+if (oldwin != NULL && !win_valid(oldwin))
+   oldwin = NULL;
+
 #if defined(FEAT_EVAL)
 if ((command != NULL || newlnum > (linenr_T)0)
&& *get_vim_var_str(VV_SWAPCOMMAND) == NUL)
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index e2e29f12d..961718fd6 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -105,6 +105,7 @@ NEW_TESTS = \
test_conceal \
test_const \
test_cpoptions \
+   test_crash \
test_crypt \
test_cscope \
test_cursor_func \
@@ -369,6 +370,7 @@ NEW_TESTS_RES = \
test_conceal.res \
test_const.res \
test_cpoptions.res \
+   test_crash.res \
test_crypt.res \
test_cscope.res \
test_cursor_func.res \
diff --git a/src/testdir/crash/poc_huaf1 b/src/testdir/crash/poc_huaf1
new file mode 100644
index 
..0d0ea475c1062a4df89ee505a078ecc578d57f22
GIT binary patch
literal 1541
zcmdT^L1+^}6#bFpkWY-Gg&?9hDH20XHRRUlp&~|MsiHx0NfqmkTVSd84y?Yk~#Y5W5_-E6^ZW0j-9(;${|L4CyGk^b^*#;6}Y6Z)z
z)l^t&HebH;tY$NjNMu)7dyIU!S`cxj5Metx`>HH{JD`mXr-Z05_p|G|#Xc;uz2Z7$
z5Ymh#*FS7$Y&UHdI-5F(v@K_?Gh}hVQrVixUM8Nmyh@n(WsfMIu~dL@c7rimB%ZQ|9s#=Fttxs|q1n7Ie78DC!y<_cq?IYhW
zDK0>jYq##05Lf?Ym&&1hKp{7({&#)si0IFK%x|TSx&OV7*L;2axIDl7@O*zC)7b6f
zZ+qBLF87o>(oyc~F3KHnp7o-B+1u&OwVOOio=aJqHn!
zN;`^m6Aaa*LtF)?cFEAe-Cc-?4kgR;dv|T}dJWN(A{F{U?!LeGzVGhxd$$iH!rfKO
zv$d*{CHj5xv}(1#zkhg@MZb+_L?0ums{?-=`Y>l_v!g#pQbVWWLKIo;YpqtxZjpI*
zT-;|-Rb(=Dwz0CGu_Lrl_J+geS1=L0|g-*H0
zeq-B6@dO=aKxychDtd#?SKujlfdq=nLWTslr_i1{Z%+uGKFxLU%chg5;sq=UUYx#V
zl_pB1(qgG}@fZx^AYAe$4~Juu;d8NtkytEj!^>IBU{2_QRvG!|7Y0@Vt%4!Zl}|(n
znZ$=E=Ox*E)FR{8J(&$*?ln?cIe{4(LCr~Bk2PnUOQs-1vpy^Lh!@_RL;jqOiMJ`Y
zq6q*n&HP6yJqhS$sRlr!oBU3>%Yoox%cib)%WA8E+wA;p+l1{pmw0Y1So=BX=xD#{
z82xX8-rIb0jC=puG&;r}M0O4$bu>B)Ko95{M-9UPPzY7%Jgg8(r~wpG$ij>UMowUq
zCkF_QJ~a#L)O1W8zVtj*Jux={gyf1(E;98bMX&WlFNt2=HXF!uasy><=f(c$6)gu!
zH4;!{rb|WzF6Nsn8{XBXxbo44bL;utR#zJjb+$X8z0jt)rfc^=yV+8uvIlMLX6&50
z2klK?e#?P7tC8g|zA^mbo&9>;4*2zbz@RNaxBs*+Na@l}VbtX;X2l46-?ZrlkzvN2s>CM?nSK@o(}(a~5P1K)0^#Rw7_s^Jej$%*4(Aq=d2t<`Fo4lLjiaR&p4
zVT>T2YJJ*^c#!t+UJIWD+KprLDp8z4p;*etZjsUe?&nH5URk5Z>2Gu$
zh##fq5mOYH5yibu{blx;*^DTNOG1_e*9)K*&gip(r%rG;oMm%~q;U=m!Hv0_nl)=#
z)}m!yILyXjoL#gn_j*Hl@9EI%$xz6vv*+`WhMaH%vy`livub?$d4EZxz6i3dA&R~MxNgu5@y65St&5pdJ3p0qj;-2
zZb?J8kaEpGf+X~Dr$OGY_6Wup_Nb!wS~h%uBmd*TNR=Fzm-27Vfyic2hd+N8Z}>l$Us}xv2m#KX()OulR%P+rK+tkbOH`
zdqvF*vTtYgGN>RntROlZ$UU+1vafC3d$)~$McXCUjV!lI%iz;tXn=ofIJ8cjs#Gb<
a^Z@raUc`65C$U^n#{xRr?JLgYx76

literal 0
HcmV?d1

diff --git a/src/testdir/dumps/Test_crash_01.dump 
b/src/testdir/dumps/Test_crash_01.dump
new file mode 100644
index 0..1f0fd44c0
--- /dev/null
+++ b/src/testdir/dumps/Test_crash_01.dump
@@ -0,0 +1,20 @@
+> +0&#ff0@74
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
diff --git a/src/testdir/test_crash.vim b/src/testdir/test_crash.vim
new file mode 100644
index 0..0dea3c2cb
--- /dev/null
+++ b/src/testdir/test_crash.vim
@@ -0,0 +1,25 @@
+" Some tests, that used to crash Vim
+source check.vim
+source screendump.vim
+
+CheckScreendump
+
+func Test_crash1()
+  " The following used to crash Vim
+  let opts = #{wait_for_ruler: 0}
+  let args = ' -u NONE -i NONE -n -e -s -S '
+  let buf = RunVimInTerminal(args .. ' crash/poc_huaf1', opts)
+  call VerifyScreenDump(buf, 'Test_crash_01', {})
+  exe buf .. "bw!"
+
+  let buf = RunVimInTerminal(args .. ' crash/poc_huaf2', opts)
+  call VerifyScreenDump(buf, 'Test_crash_01', {})
+  exe buf .. "bw!"
+
+  let buf = RunVimInTerminal(args .. ' crash/poc_huaf3', opts)
+  call VerifyScreenDump(buf, 'Test_crash_01', {})
+  exe buf .. "bw!"
+
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 5f6995cc6..34878d749 100644
--- a/src/version.c
+++ b/src/version.c
@@ -699,6 +699,8 @@ static char *(features[]) =
 
 static int included_patch

Re: Vim9 class/object member access control

2023-09-02 Thread Yegappan Lakshmanan
On Sat, Sep 2, 2023 at 5:02 AM Yegappan Lakshmanan  wrote:
>
> Hi all,
>
> The access control to readonly, read-write and private members in a
> class/object discussed in https://github.com/vim/vim/discussions/12979
> should all work now.  Let us know if there are any cases where the
> access control is not correctly enforced.
>
> When testing these, I found an existing memory corruption issue
> with class member variables. When a class member uses a complex
> type (e.g. List or Dict), then it is garbage collected under some
> conditions leading to a memory corruption (reported by ASAN and
> Valgrind).  I am still debugging this issue.
>

Correction: This is a use-after-free problem and not a memory corruption.

- Yegappan

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/CAAW7x7%3Dzemkp07%2BwqU3rPr6tMk9PTmQgp_tKa4Kc4RiJ1CbutA%40mail.gmail.com.


Vim9 class/object member access control

2023-09-02 Thread Yegappan Lakshmanan
Hi all,

The access control to readonly, read-write and private members in a
class/object discussed in https://github.com/vim/vim/discussions/12979
should all work now.  Let us know if there are any cases where the
access control is not correctly enforced.

When testing these, I found an existing memory corruption issue
with class member variables. When a class member uses a complex
type (e.g. List or Dict), then it is garbage collected under some
conditions leading to a memory corruption (reported by ASAN and
Valgrind).  I am still debugging this issue.

Regards,
Yegappan

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/CAAW7x7kbtM_%2B7sSYPmz6YwZ1%3DruA9t9Rpf35G%2Bx4cMnMpiqVXQ%40mail.gmail.com.