changeset 26430:42471d3ac079 v8.2.3746

patch 8.2.3746: cannot disassemble function starting with "debug" or "profile" Commit: https://github.com/vim/vim/commit/c7d5fc8622f03cca8d1a9a54d4703e8f0c9941d0 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Dec 5 17:20:24 2021 +0000 patch 8.2.3746: cannot disassemble function starting with "debug" or "profile" Problem: Cannot disassemble function starting with "debug" or "profile". Solution: Check for white space following. (closes https://github.com/vim/vim/issues/9273)
author Bram Moolenaar <Bram@vim.org>
date Sun, 05 Dec 2021 18:30:04 +0100
parents a79055d7f518
children 6501e4553b5c
files src/testdir/test_vim9_script.vim src/version.c src/vim9execute.c
diffstat 3 files changed, 39 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -3988,6 +3988,41 @@ def Test_vim9_autoload()
   &rtp = save_rtp
 enddef
 
+" test disassembling an auto-loaded function starting with "debug"
+def Test_vim9_autoload_disass()
+  mkdir('Xdir/autoload', 'p')
+  var save_rtp = &rtp
+  exe 'set rtp^=' .. getcwd() .. '/Xdir'
+
+  var lines =<< trim END
+     vim9script
+     def debugit#test(): string
+       return 'debug'
+     enddef
+  END
+  writefile(lines, 'Xdir/autoload/debugit.vim')
+
+  lines =<< trim END
+     vim9script
+     def profileit#test(): string
+       return 'profile'
+     enddef
+  END
+  writefile(lines, 'Xdir/autoload/profileit.vim')
+
+  lines =<< trim END
+    vim9script
+    assert_equal('debug', debugit#test())
+    disass debugit#test
+    assert_equal('profile', profileit#test())
+    disass profileit#test
+  END
+  CheckScriptSuccess(lines)
+
+  delete('Xdir', 'rf')
+  &rtp = save_rtp
+enddef
+
 " test using a vim9script that is auto-loaded from an autocmd
 def Test_vim9_aucmd_autoload()
   var lines =<< trim END
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3746,
+/**/
     3745,
 /**/
     3744,
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -5904,12 +5904,12 @@ ex_disassemble(exarg_T *eap)
     int		is_global = FALSE;
     compiletype_T compile_type = CT_NONE;
 
-    if (STRNCMP(arg, "profile", 7) == 0)
+    if (STRNCMP(arg, "profile", 7) == 0 && VIM_ISWHITE(arg[7]))
     {
 	compile_type = CT_PROFILE;
 	arg = skipwhite(arg + 7);
     }
-    else if (STRNCMP(arg, "debug", 5) == 0)
+    else if (STRNCMP(arg, "debug", 5) == 0 && VIM_ISWHITE(arg[5]))
     {
 	compile_type = CT_DEBUG;
 	arg = skipwhite(arg + 5);