cut: allocate "printed" only if OPT_CHAR or OPT_BYTE
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
ad12ab439b
commit
478ac90f2c
1 changed files with 4 additions and 3 deletions
|
@ -101,12 +101,13 @@ static void cut_file(FILE *file, const char *delim, const char *odelim,
|
|||
|
||||
/* set up a list so we can keep track of what's been printed */
|
||||
int linelen = strlen(line);
|
||||
char *printed = xzalloc(linelen + 1);
|
||||
char *orig_line = line;
|
||||
unsigned cl_pos = 0;
|
||||
|
||||
/* cut based on chars/bytes XXX: only works when sizeof(char) == byte */
|
||||
if (option_mask32 & (OPT_CHAR | OPT_BYTE)) {
|
||||
char *printed = xzalloc(linelen + 1);
|
||||
|
||||
/* print the chars specified in each cut list */
|
||||
for (; cl_pos < nlists; cl_pos++) {
|
||||
int spos;
|
||||
|
@ -120,6 +121,7 @@ static void cut_file(FILE *file, const char *delim, const char *odelim,
|
|||
}
|
||||
}
|
||||
}
|
||||
free(printed);
|
||||
} else if (*delim == '\n') { /* cut by lines */
|
||||
int spos = cut_lists[cl_pos].startpos;
|
||||
|
||||
|
@ -214,9 +216,8 @@ static void cut_file(FILE *file, const char *delim, const char *odelim,
|
|||
putchar('\n');
|
||||
next_line:
|
||||
linenum++;
|
||||
free(printed);
|
||||
free(orig_line);
|
||||
}
|
||||
} /* while (got line) */
|
||||
#undef opt_REGEX
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue