diff options
| author | Andrew Morton <akpm@linux-foundation.org> | 2023-07-02 18:53:03 -0700 |
|---|---|---|
| committer | Andrew Morton <akpm@linux-foundation.org> | 2023-07-02 18:53:03 -0700 |
| commit | 3fbff91afbf0148e937b8718ed865b073c587d9f (patch) | |
| tree | f69741c34579567af3d31f68737ea322d9311892 /tools/lib/subcmd/help.c | |
| parent | 44f10dbefd5e41b3385af91f855a57aa2afaf40e (diff) | |
| parent | a901a3568fd26ca9c4a82d8bc5ed5b3ed844d451 (diff) | |
Merge branch 'master' into mm-hotfixes-stable
Diffstat (limited to 'tools/lib/subcmd/help.c')
| -rw-r--r-- | tools/lib/subcmd/help.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/tools/lib/subcmd/help.c b/tools/lib/subcmd/help.c index bf02d62a3b2b..67a8d6b740ea 100644 --- a/tools/lib/subcmd/help.c +++ b/tools/lib/subcmd/help.c @@ -16,6 +16,8 @@ void add_cmdname(struct cmdnames *cmds, const char *name, size_t len) { struct cmdname *ent = malloc(sizeof(*ent) + len + 1); + if (!ent) + return; ent->len = len; memcpy(ent->name, name, len); @@ -66,6 +68,7 @@ void exclude_cmds(struct cmdnames *cmds, struct cmdnames *excludes) while (ci < cmds->cnt && ei < excludes->cnt) { cmp = strcmp(cmds->names[ci]->name, excludes->names[ei]->name); if (cmp < 0) { + zfree(&cmds->names[cj]); cmds->names[cj++] = cmds->names[ci++]; } else if (cmp == 0) { ci++; @@ -75,9 +78,12 @@ void exclude_cmds(struct cmdnames *cmds, struct cmdnames *excludes) } } - while (ci < cmds->cnt) + while (ci < cmds->cnt) { + zfree(&cmds->names[cj]); cmds->names[cj++] = cmds->names[ci++]; - + } + for (ci = cj; ci < cmds->cnt; ci++) + zfree(&cmds->names[ci]); cmds->cnt = cj; } |
