commit acecdbff1f57e5d828a3f04ef5122af090909b01
parent f89558848b119048a2656fbf127f4cd85129330b
Author: zeertzjq <zeertzjq@outlook.com>
Date: Sun, 21 Dec 2025 11:41:33 +0800
fix(api,lua): handle converting NULL funcref/partial (#37060)
This fixes the Coverity warnings.
Diffstat:
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/nvim/api/private/converter.c b/src/nvim/api/private/converter.c
@@ -76,8 +76,9 @@ static Object typval_cbuf_to_obj(EncodedData *edata, const char *data, size_t le
#define TYPVAL_ENCODE_CONV_FUNC_START(tv, fun, prefix) \
do { \
- ufunc_T *fp = find_func(fun); \
- if (fp != NULL && (fp->uf_flags & FC_LUAREF)) { \
+ const char *const fun_ = (fun); \
+ ufunc_T *fp; \
+ if (fun_ != NULL && (fp = find_func(fun_)) != NULL && fp->uf_flags & FC_LUAREF) { \
kvi_push(edata->stack, LUAREF_OBJ(api_new_luaref(fp->uf_luaref))); \
} else { \
TYPVAL_ENCODE_CONV_NIL(tv); \
diff --git a/src/nvim/lua/converter.c b/src/nvim/lua/converter.c
@@ -455,8 +455,9 @@ static bool typval_conv_special = false;
#define TYPVAL_ENCODE_CONV_FUNC_START(tv, fun, prefix) \
do { \
- ufunc_T *fp = find_func(fun); \
- if (fp != NULL && fp->uf_flags & FC_LUAREF) { \
+ const char *const fun_ = (fun); \
+ ufunc_T *fp; \
+ if (fun_ != NULL && (fp = find_func(fun_)) != NULL && fp->uf_flags & FC_LUAREF) { \
nlua_pushref(lstate, fp->uf_luaref); \
} else { \
TYPVAL_ENCODE_CONV_NIL(tv); \