mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-07-26 10:39:01 +02:00
cut: avoid a redundant heap allocation
* src/cut.c (set_fields): Don't allocate memory for `printable_field' if there are no finite ranges. This is achieved by keeping max_range_endpoint as 0 when there are no finite ranges. max_range_endpoint is then used throughout the code to guard against allocation of, and access to the bit array. The extra allocation was introduced via commit v8.10-3-g2e636af.
This commit is contained in:
committed by
Pádraig Brady
parent
00743a1f6e
commit
ec48beadfa
@@ -500,14 +500,13 @@ set_fields (const char *fieldstr)
|
||||
if (rp[i].hi > max_range_endpoint)
|
||||
max_range_endpoint = rp[i].hi;
|
||||
}
|
||||
if (max_range_endpoint < eol_range_start)
|
||||
max_range_endpoint = eol_range_start;
|
||||
|
||||
/* Allocate an array large enough so that it may be indexed by
|
||||
the field numbers corresponding to all finite ranges
|
||||
(i.e. '2-6' or '-4', but not '5-') in FIELDSTR. */
|
||||
|
||||
printable_field = xzalloc (max_range_endpoint / CHAR_BIT + 1);
|
||||
if (max_range_endpoint)
|
||||
printable_field = xzalloc (max_range_endpoint / CHAR_BIT + 1);
|
||||
|
||||
qsort (rp, n_rp, sizeof (rp[0]), compare_ranges);
|
||||
|
||||
@@ -531,7 +530,8 @@ set_fields (const char *fieldstr)
|
||||
|
||||
if (output_delimiter_specified
|
||||
&& !complement
|
||||
&& eol_range_start && !is_printable_field (eol_range_start))
|
||||
&& eol_range_start
|
||||
&& max_range_endpoint && !is_printable_field (eol_range_start))
|
||||
mark_range_start (eol_range_start);
|
||||
|
||||
free (rp);
|
||||
|
||||
Reference in New Issue
Block a user