patch 7.4.2137
Problem: Using function() with a name will find another function when it is
redefined.
Solution: Add funcref(). Refer to lambda using a partial. Fix several
reference counting issues.
diff --git a/src/if_mzsch.c b/src/if_mzsch.c
index daec6b0..7a462ad 100644
--- a/src/if_mzsch.c
+++ b/src/if_mzsch.c
@@ -3134,7 +3134,7 @@
/* FIXME: func_ref() and func_unref() are needed. */
/* TODO: Support pt_dict and pt_argv. */
funcname = scheme_make_byte_string(
- (char *)vim_value->vval.v_partial->pt_name);
+ (char *)partial_name(vim_value->vval.v_partial));
MZ_GC_CHECK();
result = scheme_make_closed_prim_w_arity(vim_funcref, funcname,
(const char *)BYTE_STRING_VALUE(funcname), 0, -1);