vim-patch:9.0.1079: leaking memory when defining a user command fails

Problem:    Leaking memory when defining a user command fails.
Solution:   Free "compl_arg" when needed. (closes vim/vim#11726)

33e543038b
This commit is contained in:
zeertzjq
2022-12-20 05:24:03 +08:00
parent b201cbfc61
commit ff62d76193
2 changed files with 12 additions and 2 deletions

View File

@@ -943,7 +943,7 @@ void ex_command(exarg_T *eap)
end = skiptowhite(p);
if (uc_scan_attr(p, (size_t)(end - p), &argt, &def, &flags, &compl, (char_u **)&compl_arg,
&addr_type_arg) == FAIL) {
return;
goto theend;
}
p = skipwhite(end);
}
@@ -953,7 +953,7 @@ void ex_command(exarg_T *eap)
end = uc_validate_name(name);
if (!end) {
emsg(_("E182: Invalid command name"));
return;
goto theend;
}
name_len = (size_t)(end - name);
@@ -971,7 +971,12 @@ void ex_command(exarg_T *eap)
} else {
uc_add_command(name, name_len, p, argt, def, flags, compl, compl_arg, LUA_NOREF, LUA_NOREF,
addr_type_arg, LUA_NOREF, eap->forceit);
return; // success
}
theend:
xfree(compl_arg);
}
/// ":comclear"