Problem: Crash when using a partial or lambda as a clipboard provider
Solution: Don't call free_callback() from clip_provider_get_callback()
(Shane Harper).
closes: #19766
Signed-off-by: Shane Harper <shane@shaneharper.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
// func_tv owns the function name, so we must make a copy for the callback
set_callback(callback, &cb);
- free_callback(&cb);
+ if (cb.cb_free_name)
+ vim_free(cb.cb_name);
clear_tv(&func_tv);
return OK;
}
func Test_clipboard_provider_copy()
CheckFeature clipboard_provider
+ function s:copy_cb_to_test_partial(_, reg, type, str)
+ call s:Copy(a:reg, a:type, a:str)
+ endfunction
+
let v:clipproviders["test"] = {
\ "copy": {
\ '+': function("s:Copy"),
- \ '*': function("s:Copy")
+ \ '*': function("s:copy_cb_to_test_partial", [""])
\ }
\ }
set clipmethod=test
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 213,
/**/
212,
/**/