forked from aniani/vim
patch 8.2.3788: lambda for option that is a function may be freed
Problem: Lambda for option that is a function may be garbage collected.
Solution: Set a reference in the funcref. (Yegappan Lakshmanan,
closes #9330)
This commit is contained in:
committed by
Bram Moolenaar
parent
6e371ecb27
commit
6ae8fae869
@@ -117,7 +117,7 @@ call_imstatusfunc(void)
|
||||
void
|
||||
free_xim_stuff(void)
|
||||
{
|
||||
#if defined(FEAT_EVAL) && \
|
||||
# if defined(FEAT_EVAL) && \
|
||||
(defined(FEAT_XIM) || defined(IME_WITHOUT_XIM) || defined(VIMDLL))
|
||||
free_callback(&imaf_cb);
|
||||
free_callback(&imsf_cb);
|
||||
@@ -125,6 +125,24 @@ free_xim_stuff(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Mark the global 'imactivatefunc' and 'imstatusfunc' callbacks with 'copyID'
|
||||
* so that they are not garbage collected.
|
||||
*/
|
||||
int
|
||||
set_ref_in_im_funcs(int copyID UNUSED)
|
||||
{
|
||||
int abort = FALSE;
|
||||
|
||||
#if defined(FEAT_EVAL) && \
|
||||
(defined(FEAT_XIM) || defined(IME_WITHOUT_XIM) || defined(VIMDLL))
|
||||
abort = set_ref_in_callback(&imaf_cb, copyID);
|
||||
abort = abort || set_ref_in_callback(&imsf_cb, copyID);
|
||||
#endif
|
||||
|
||||
return abort;
|
||||
}
|
||||
|
||||
|
||||
#if defined(FEAT_XIM) || defined(PROTO)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user