patch 8.2.5117: crash when calling a Lua callback from a :def function
Problem: Crash when calling a Lua callback from a :def function. (Bohdan
Makohin)
Solution: Handle FC_CFUNC in call_user_func_check(). (closes #10587)
diff --git a/src/userfunc.c b/src/userfunc.c
index cc477fe..9b960b7 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3021,6 +3021,15 @@
{
int error;
+#ifdef FEAT_LUA
+ if (fp->uf_flags & FC_CFUNC)
+ {
+ cfunc_T cb = fp->uf_cb;
+
+ return (*cb)(argcount, argvars, rettv, fp->uf_cb_state);
+ }
+#endif
+
if (fp->uf_flags & FC_RANGE && funcexe->fe_doesrange != NULL)
*funcexe->fe_doesrange = TRUE;
error = check_user_func_argcount(fp, argcount);
@@ -3584,14 +3593,6 @@
if (fp != NULL && (fp->uf_flags & FC_DELETED))
error = FCERR_DELETED;
-#ifdef FEAT_LUA
- else if (fp != NULL && (fp->uf_flags & FC_CFUNC))
- {
- cfunc_T cb = fp->uf_cb;
-
- error = (*cb)(argcount, argvars, rettv, fp->uf_cb_state);
- }
-#endif
else if (fp != NULL)
{
if (funcexe->fe_argv_func != NULL)