summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-12-05 17:20:24 +0000
committerBram Moolenaar <Bram@vim.org>2021-12-05 17:20:24 +0000
commitc7d5fc8622f03cca8d1a9a54d4703e8f0c9941d0 (patch)
tree3b42a9e1c84f60fd992e8e8834bf88ff886b27fa
parentf661cee847d2c17652b0ad0d703d2e3ac8610265 (diff)
downloadvim-git-c7d5fc8622f03cca8d1a9a54d4703e8f0c9941d0.tar.gz
patch 8.2.3746: cannot disassemble function starting with "debug" or "profile"v8.2.3746
Problem: Cannot disassemble function starting with "debug" or "profile". Solution: Check for white space following. (closes #9273)
-rw-r--r--src/testdir/test_vim9_script.vim35
-rw-r--r--src/version.c2
-rw-r--r--src/vim9execute.c4
3 files changed, 39 insertions, 2 deletions
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 40833c51c..4d83a4e8f 100644
--- 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
diff --git a/src/version.c b/src/version.c
index 54baf7b16..0d00f207d 100644
--- 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,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 2908e55c7..adfb9207c 100644
--- 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);