# HG changeset patch # User Bram Moolenaar # Date 1638725404 -3600 # Node ID 42471d3ac0799fa7f5c5a1daba0eb2b9ca1bd427 # Parent a79055d7f518a203ae4d9b611ef45d5463ffd761 patch 8.2.3746: cannot disassemble function starting with "debug" or "profile" Commit: https://github.com/vim/vim/commit/c7d5fc8622f03cca8d1a9a54d4703e8f0c9941d0 Author: Bram Moolenaar 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) diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim --- 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 --- 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 --- 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);