mirror of
https://git.FreeBSD.org/src.git
synced 2024-10-18 02:19:39 +00:00
Fix a typo: argv -> argvp
Rationale: We are interested in the current (last) element of the argv array there, not in its first element. The if construct is there because we want to avoid adding empty (zero-length) arguments to argv, so we just don't advance argvp if the current argument is empty, and it gets overwritten at the next iteration. Note that strsep(3) doesn't treat consecutive delim characters as a single separator, it returns empty fields between such characters, and it's up to the caller to handle them this or that way. Also add a comment that the argv array ends up null-terminated in any case (it's due to the design of the for loop) as an answer to a possible question why the whole argv isn't zero-filled. Submitted by: yongari Tested by: yongari MFC after: 3 days
This commit is contained in:
parent
322627150d
commit
3cb8dc7cd5
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=169129
@ -583,12 +583,13 @@ run(int *ofd, const char *cmdline, ...)
|
||||
argv = (char **)malloc(sizeof(*argv) * (argc + 1));
|
||||
assert(argv != NULL);
|
||||
for (p = cmd, argvp = argv; (*argvp = strsep(&p, " ")) != NULL;)
|
||||
if (**argv != '\0')
|
||||
if (**argvp != '\0')
|
||||
if (++argvp >= &argv[argc]) {
|
||||
*argvp = NULL;
|
||||
break;
|
||||
}
|
||||
assert(*argv);
|
||||
/* The argv array ends up NULL-terminated here. */
|
||||
|
||||
/* Make sure the above loop works as expected. */
|
||||
if (debug) {
|
||||
|
Loading…
Reference in New Issue
Block a user