From c7d5fc8622f03cca8d1a9a54d4703e8f0c9941d0 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 5 Dec 2021 17:20:24 +0000 Subject: 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 #9273) --- src/testdir/test_vim9_script.vim | 35 +++++++++++++++++++++++++++++++++++ src/version.c | 2 ++ src/vim9execute.c | 4 ++-- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 40833c51c6..4d83a4e8fb 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 54baf7b167..0d00f207d1 100644 --- a/src/version.c +++ b/src/version.c @@ -753,6 +753,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3746, /**/ 3745, /**/ diff --git a/src/vim9execute.c b/src/vim9execute.c index 2908e55c71..adfb9207cc 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); -- cgit v1.2.3