patch 7.4.1656
Problem: Crash when using partial with a timer.
Solution: Increment partial reference count. (Hirohito Higashi)
diff --git a/src/eval.c b/src/eval.c
index 2256589..06f3585 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -20190,6 +20190,7 @@
if (arg->v_type == VAR_PARTIAL && arg->vval.v_partial != NULL)
{
*pp = arg->vval.v_partial;
+ ++(*pp)->pt_refcount;
return (*pp)->pt_name;
}
*pp = NULL;
diff --git a/src/testdir/test_timers.vim b/src/testdir/test_timers.vim
index 9f58a35..7ef51e5 100644
--- a/src/testdir/test_timers.vim
+++ b/src/testdir/test_timers.vim
@@ -30,3 +30,16 @@
call assert_true(s:val > 1)
call assert_true(s:val < 5)
endfunc
+
+func Test_with_partial_callback()
+ let s:val = 0
+ let s:meow = {}
+ function s:meow.bite(...)
+ let s:val += 1
+ endfunction
+
+ call timer_start(50, s:meow.bite)
+ sleep 200m
+ call assert_equal(1, s:val)
+endfunc
+" vim: ts=2 sw=0 et
diff --git a/src/version.c b/src/version.c
index a3d6e1e..28ac3e5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1656,
+/**/
1655,
/**/
1654,