[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug-recutils] [PATCH] Fix some memory leaks detected by Valgrind.
From: |
Michał Masłowski |
Subject: |
[bug-recutils] [PATCH] Fix some memory leaks detected by Valgrind. |
Date: |
Mon, 16 Apr 2012 21:28:15 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
Hello,
This patch fixes memory leaks which occurred when running "recsel
200-records.in" with the file generated for performance tests via
valgrind.
Maybe running tests via valgrind should be supported in the build
system, it would make detecting more such problems easier. I haven't
tried changing it.
2012-04-16 Michał Masłowski <address@hidden>
* src/rec-field.c (rec_field_destroy): Free the value, like the
other structure members.
* src/rec-mset.c (rec_mset_destroy): Free type names and the mset
when destroying it.
* src/rec-parser.c (rec_parse_field): Free field name and value
after setting them, since only copies are used later.
* utils/recutl.c (recutl_parse_db_from_file): Destroy the parser
after using it.
From c7d056114266245d9e4d90760ebc6a0cc51cce33 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Mas=C5=82owski?= <address@hidden>
Date: Mon, 16 Apr 2012 20:37:45 +0200
Subject: [PATCH] Fix some memory leaks detected by Valgrind.
---
src/rec-field.c | 1 +
src/rec-mset.c | 6 ++++++
src/rec-parser.c | 2 ++
utils/recutl.c | 3 ++-
4 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/rec-field.c b/src/rec-field.c
index 57fd5b0..a07af0d 100644
--- a/src/rec-field.c
+++ b/src/rec-field.c
@@ -182,6 +182,7 @@ rec_field_destroy (rec_field_t field)
if (field)
{
free (field->name);
+ free (field->value);
free (field->source);
free (field->location_str);
free (field->char_location_str);
diff --git a/src/rec-mset.c b/src/rec-mset.c
index 707167a..f15c294 100644
--- a/src/rec-mset.c
+++ b/src/rec-mset.c
@@ -146,7 +146,13 @@ rec_mset_destroy (rec_mset_t mset)
{
if (mset)
{
+ int i;
+ for (i = 0; i < mset->ntypes; i++)
+ {
+ free(mset->name[i]);
+ }
gl_list_free (mset->elem_list);
+ free (mset);
}
}
diff --git a/src/rec-parser.c b/src/rec-parser.c
index 0019d2d..1d27f68 100644
--- a/src/rec-parser.c
+++ b/src/rec-parser.c
@@ -386,6 +386,8 @@ rec_parse_field (rec_parser_t parser,
{
new = rec_field_new (field_name,
field_value);
+ free (field_name);
+ free (field_value);
if (new == NULL)
return false;
diff --git a/utils/recutl.c b/utils/recutl.c
index fb53f89..88228a3 100644
--- a/utils/recutl.c
+++ b/utils/recutl.c
@@ -254,7 +254,8 @@ recutl_parse_db_from_file (FILE *in,
rec_parser_perror (parser, "%s", file_name);
res = false;
}
-
+ rec_parser_destroy (parser);
+
return res;
}
--
1.7.10
pgpldWfHoFoew.pgp
Description: PGP signature
- [bug-recutils] [PATCH] Fix some memory leaks detected by Valgrind.,
Michał Masłowski <=