patch 8.1.0515: reloading a script gives errors for existing functions
Problem: Reloading a script gives errors for existing functions.
Solution: Allow redefining a function once when reloading a script.
diff --git a/src/userfunc.c b/src/userfunc.c
index f79e7f1..8bfebec 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -2330,14 +2330,19 @@
fp = find_func(name);
if (fp != NULL)
{
- if (!eap->forceit)
+ // Function can be replaced with "function!" and when sourcing the
+ // same script again, but only once.
+ if (!eap->forceit
+ && (fp->uf_script_ctx.sc_sid != current_sctx.sc_sid
+ || fp->uf_script_ctx.sc_seq == current_sctx.sc_seq))
{
emsg_funcname(e_funcexts, name);
goto erret;
}
if (fp->uf_calls > 0)
{
- emsg_funcname(N_("E127: Cannot redefine function %s: It is in use"),
+ emsg_funcname(
+ N_("E127: Cannot redefine function %s: It is in use"),
name);
goto erret;
}