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