[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#13098: [PATCH] cut.c: Fix memory leak
From: |
Cojocaru Alexandru |
Subject: |
bug#13098: [PATCH] cut.c: Fix memory leak |
Date: |
Thu, 6 Dec 2012 03:11:48 +0100 |
>From 82f2b062c0e21d9a0d64f9ceab363d2a79f5a6eb Mon Sep 17 00:00:00 2001
From: Cojocaru Alexandru <address@hidden>
Date: Thu, 6 Dec 2012 03:03:41 +0100
Subject: [PATCH] cut: fix memory leak
* src/cut.c (set_fields): don't allocate memory for
`printable_field' if there are no finite ranges.
The bug was introduced on 2012-2-7 via commit 2e636af.
---
src/cut.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/cut.c b/src/cut.c
index 4219d24..87abd15 100644
--- a/src/cut.c
+++ b/src/cut.c
@@ -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 (n_rp)
+ printable_field = xzalloc (max_range_endpoint / CHAR_BIT + 1);
qsort (rp, n_rp, sizeof (rp[0]), compare_ranges);
@@ -531,8 +530,11 @@ set_fields (const char *fieldstr)
if (output_delimiter_specified
&& !complement
- && eol_range_start && !is_printable_field (eol_range_start))
- mark_range_start (eol_range_start);
+ && eol_range_start
+ && printable_field && !is_printable_field (eol_range_start))
+ {
+ mark_range_start (eol_range_start);
+ }
free (rp);
--
1.8.0.1
--
Cojocaru Alexandru <address@hidden>
- bug#13098: [PATCH] cut.c: Fix memory leak,
Cojocaru Alexandru <=