Index: sort.c =================================================================== RCS file: /cvsroot/src/usr.bin/sort/sort.c,v retrieving revision 1.63 diff -u -p -r1.63 sort.c --- sort.c 1 Jun 2016 08:24:03 -0000 1.63 +++ sort.c 17 Dec 2016 21:52:34 -0000 @@ -120,7 +120,7 @@ main(int argc, char *argv[]) char mode = 0; char *outfile, *outpath = 0; struct field *fldtab; - size_t fldtab_sz, fld_cnt; + size_t fldtab_sz, fld_cnt, fld_index; struct filelist filelist; int num_input_files; FILE *outfp = NULL; @@ -142,6 +142,7 @@ main(int argc, char *argv[]) /* fldtab[0] is the global options. */ fldtab_sz = 3; fld_cnt = 0; + fld_index = 0; fldtab = emalloc(fldtab_sz * sizeof(*fldtab)); memset(fldtab, 0, fldtab_sz * sizeof(*fldtab)); @@ -156,7 +157,7 @@ main(int argc, char *argv[]) while ((ch = getopt(argc, argv, SORT_OPTS)) != -1) { switch (ch) { case 'b': - fldtab[0].flags |= BI | BT; + fldtab[fld_index].flags |= BI | BT; break; case 'c': case 'C': case 'm': if (mode) @@ -168,7 +169,7 @@ main(int argc, char *argv[]) debug_flags |= 1 << (optarg[i] & 31); break; case 'd': case 'f': case 'i': case 'n': case 'l': - fldtab[0].flags |= optval(ch, 0); + fldtab[fld_index].flags |= optval(ch, 0); break; case 'H': /* -H was ; use merge sort for blocks of large files' */ @@ -176,10 +177,9 @@ main(int argc, char *argv[]) break; case 'k': fldtab = erealloc(fldtab, (fldtab_sz + 1) * sizeof(*fldtab)); - memset(&fldtab[fldtab_sz], 0, sizeof(fldtab[0])); - fldtab_sz++; + memset(&fldtab[fldtab_sz++], 0, sizeof(fldtab[0])); - setfield(optarg, &fldtab[++fld_cnt], fldtab[0].flags); + setfield(optarg, &fldtab[++fld_cnt], fldtab[fld_index++].flags); break; case 'o': outpath = optarg;