diff options
author | Dmitry Sivachenko <demon@FreeBSD.org> | 2005-12-08 11:18:11 +0000 |
---|---|---|
committer | Dmitry Sivachenko <demon@FreeBSD.org> | 2005-12-08 11:18:11 +0000 |
commit | 129f54943ebae582b41066ce0d4a4a2ac86262a3 (patch) | |
tree | ffbddc322247d0fc7302fd399e7f297617abd342 | |
parent | 0da2455aa932c0a99d8771bad2c3160e7d8ae88f (diff) | |
download | freebsd-ports-129f54943ebae582b41066ce0d4a4a2ac86262a3.zip |
Plug memory leak in librecode.
Bump PORTREVISION.
PR: 89934
Submitted by: Sergey Prikhodko <sergey@network-asp.biz>
-rw-r--r-- | converters/recode/Makefile | 2 | ||||
-rw-r--r-- | converters/recode/files/patch-src::names.c | 33 | ||||
-rw-r--r-- | converters/recode/files/patch-src::outer.c | 18 |
3 files changed, 52 insertions, 1 deletions
diff --git a/converters/recode/Makefile b/converters/recode/Makefile index 7a7c4eddc7e0..69149089c59c 100644 --- a/converters/recode/Makefile +++ b/converters/recode/Makefile @@ -7,7 +7,7 @@ PORTNAME= recode PORTVERSION= 3.6 -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= converters MASTER_SITES= ${MASTER_SITE_GNU} MASTER_SITE_SUBDIR= recode diff --git a/converters/recode/files/patch-src::names.c b/converters/recode/files/patch-src::names.c new file mode 100644 index 000000000000..b4fddb093067 --- /dev/null +++ b/converters/recode/files/patch-src::names.c @@ -0,0 +1,33 @@ +--- src/names.c.orig Wed Dec 6 21:41:29 2000 ++++ src/names.c Fri Dec 2 16:12:26 2005 +@@ -101,6 +101,21 @@ + return strcmp (first->name, second->name) == 0; + } + ++static void ++alias_freer (void *param) ++{ ++ RECODE_ALIAS alias = param; ++ struct recode_surface_list *next = alias->implied_surfaces; ++ struct recode_surface_list *p; ++ while (next) ++ { ++ p = next->next; ++ free(next); ++ next = p; ++ } ++ free(alias); ++} ++ + bool + prepare_for_aliases (RECODE_OUTER outer) + { +@@ -108,7 +123,7 @@ + outer->number_of_symbols = 0; + + outer->alias_table +- = hash_initialize (800, NULL, alias_hasher, alias_comparator, free); ++ = hash_initialize (800, NULL, alias_hasher, alias_comparator, alias_freer); + if (!outer->alias_table) + return false; + diff --git a/converters/recode/files/patch-src::outer.c b/converters/recode/files/patch-src::outer.c new file mode 100644 index 000000000000..04801f3d0726 --- /dev/null +++ b/converters/recode/files/patch-src::outer.c @@ -0,0 +1,18 @@ +--- src/outer.c.orig Wed Aug 30 23:16:14 2000 ++++ src/outer.c Fri Dec 2 16:12:26 2005 +@@ -617,7 +617,14 @@ + if (outer->alias_table) + hash_free (outer->alias_table); + if (outer->argmatch_charset_array) +- free (outer->argmatch_charset_array); ++ { ++ char **cursor; ++ for (cursor = outer->argmatch_charset_array; *cursor; cursor++) ++ free (*cursor); ++ for (cursor = outer->argmatch_surface_array; *cursor; cursor++) ++ free (*cursor); ++ free (outer->argmatch_charset_array); ++ } + if (outer->one_to_same) + free ((void *) outer->one_to_same); + free (outer); |