- if (globbuf.gl_pathc == 0) {
- (*argc)++;
- globfree(&globbuf);
- return;
- }
- for (i = 0; i < maxargs - *argc && i < (int)globbuf.gl_pathc; i++) {
- if (i == 0)
- free(s);
- argv[*argc + i] = strdup(globbuf.gl_pathv[i]);
- if (!argv[*argc + i])
- out_of_memory("glob_expand");
+ if (globbuf.gl_pathc == 0)
+ argv[argc++] = s;
+ else {
+ int j = globbuf.gl_pathc;
+ if (j > maxargs - argc)
+ j = maxargs - argc;
+ free(s);
+ for (i = 0; i < j; i++) {
+ if (!(argv[argc++] = strdup(globbuf.gl_pathv[i])))
+ out_of_memory("glob_expand_one");
+ }