diff options
Diffstat (limited to 'tools/lib/subcmd/help.c')
| -rw-r--r-- | tools/lib/subcmd/help.c | 12 | 
1 files changed, 7 insertions, 5 deletions
| diff --git a/tools/lib/subcmd/help.c b/tools/lib/subcmd/help.c index 8561b0f01a24..9ef569492560 100644 --- a/tools/lib/subcmd/help.c +++ b/tools/lib/subcmd/help.c @@ -9,6 +9,7 @@  #include <sys/stat.h>  #include <unistd.h>  #include <dirent.h> +#include <assert.h>  #include "subcmd-util.h"  #include "help.h"  #include "exec-cmd.h" @@ -82,10 +83,11 @@ void exclude_cmds(struct cmdnames *cmds, struct cmdnames *excludes)  				ci++;  				cj++;  			} else { -				zfree(&cmds->names[cj]); -				cmds->names[cj++] = cmds->names[ci++]; +				cmds->names[cj++] = cmds->names[ci]; +				cmds->names[ci++] = NULL;  			}  		} else if (cmp == 0) { +			zfree(&cmds->names[ci]);  			ci++;  			ei++;  		} else if (cmp > 0) { @@ -94,12 +96,12 @@ void exclude_cmds(struct cmdnames *cmds, struct cmdnames *excludes)  	}  	if (ci != cj) {  		while (ci < cmds->cnt) { -			zfree(&cmds->names[cj]); -			cmds->names[cj++] = cmds->names[ci++]; +			cmds->names[cj++] = cmds->names[ci]; +			cmds->names[ci++] = NULL;  		}  	}  	for (ci = cj; ci < cmds->cnt; ci++) -		zfree(&cmds->names[ci]); +		assert(cmds->names[ci] == NULL);  	cmds->cnt = cj;  } | 
