patch 8.1.1946: memory error when profiling a function without a script ID
Problem: Memory error when profiling a function without a script ID.
Solution: Check for missing script ID. (closes #4877)
diff --git a/src/testdir/test_profile.vim b/src/testdir/test_profile.vim
index c7f515a..d0546df 100644
--- a/src/testdir/test_profile.vim
+++ b/src/testdir/test_profile.vim
@@ -4,6 +4,7 @@
CheckFeature profile
source shared.vim
+source screendump.vim
func Test_profile_func()
let lines =<< trim [CODE]
@@ -522,3 +523,29 @@
call delete('Xprofile_file.vim')
call delete('Xprofile_file.log')
endfunc
+
+" When typing the function it won't have a script ID, test that this works.
+func Test_profile_typed_func()
+ CheckScreendump
+
+ let lines =<< trim END
+ profile start XprofileTypedFunc
+ END
+ call writefile(lines, 'XtestProfile')
+ let buf = RunVimInTerminal('-S XtestProfile', #{})
+
+ call term_sendkeys(buf, ":func DoSomething()\<CR>"
+ \ .. "echo 'hello'\<CR>"
+ \ .. "endfunc\<CR>")
+ call term_sendkeys(buf, ":profile func DoSomething\<CR>")
+ call term_sendkeys(buf, ":call DoSomething()\<CR>")
+ call term_wait(buf, 200)
+ call StopVimInTerminal(buf)
+ let lines = readfile('XprofileTypedFunc')
+ call assert_equal("FUNCTION DoSomething()", lines[0])
+ call assert_equal("Called 1 time", lines[1])
+
+ " clean up
+ call delete('XprofileTypedFunc')
+ call delete('XtestProfile')
+endfunc