From 96b6ddbad0ab670ab6938376f3193c4327e75f14 Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Thu, 29 Aug 2013 12:33:37 +0900 Subject: [PATCH 1/4] po-gram: fix memory leaks --- gettext-tools/src/ChangeLog | 9 +++++++++ gettext-tools/src/po-gram-gen.y | 17 ++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/gettext-tools/src/ChangeLog b/gettext-tools/src/ChangeLog index 4e3891a..e03bc6c 100644 --- a/gettext-tools/src/ChangeLog +++ b/gettext-tools/src/ChangeLog @@ -1,3 +1,12 @@ +2013-08-29 Daiki Ueno + + * po-gram-gen.y (message): Free memory allocated for + msgid_pluralform. + (string_list): Free memory allocated for STRING. + (prev_string_list): Free memory allocated for PREV_STRING. + Reported by Alexander Potashev in + . + 2013-11-11 Daiki Ueno * x-c.c (phase5_get): Fix misuse of a logical operator. diff --git a/gettext-tools/src/po-gram-gen.y b/gettext-tools/src/po-gram-gen.y index bdc568a..8f888bd 100644 --- a/gettext-tools/src/po-gram-gen.y +++ b/gettext-tools/src/po-gram-gen.y @@ -220,11 +220,14 @@ message check_obsolete ($1, $3); check_obsolete ($1, $4); if (!$1.obsolete || pass_obsolete_entries) - do_callback_message ($1.ctxt, string2, &$1.pos, $3.string, - $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos, - $1.prev_ctxt, - $1.prev_id, $1.prev_id_plural, - $1.obsolete); + { + do_callback_message ($1.ctxt, string2, &$1.pos, $3.string, + $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos, + $1.prev_ctxt, + $1.prev_id, $1.prev_id_plural, + $1.obsolete); + free ($3.string); + } else { free_message_intro ($1); @@ -411,6 +414,7 @@ string_list { string_list_init (&$$.stringlist); string_list_append (&$$.stringlist, $1.string); + free ($1.string); $$.pos = $1.pos; $$.obsolete = $1.obsolete; } @@ -419,6 +423,7 @@ string_list check_obsolete ($1, $2); $$.stringlist = $1.stringlist; string_list_append (&$$.stringlist, $2.string); + free ($2.string); $$.pos = $1.pos; $$.obsolete = $1.obsolete; } @@ -429,6 +434,7 @@ prev_string_list { string_list_init (&$$.stringlist); string_list_append (&$$.stringlist, $1.string); + free ($1.string); $$.pos = $1.pos; $$.obsolete = $1.obsolete; } @@ -437,6 +443,7 @@ prev_string_list check_obsolete ($1, $2); $$.stringlist = $1.stringlist; string_list_append (&$$.stringlist, $2.string); + free ($2.string); $$.pos = $1.pos; $$.obsolete = $1.obsolete; } -- 1.8.4.3