Group :: Sistema/Base
RPM: gettext
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
Patch: 0001-po-gram-fix-memory-leaks.patch
Download
Download
From 96b6ddbad0ab670ab6938376f3193c4327e75f14 Mon Sep 17 00:00:00 2001
From: Daiki Ueno <ueno@gnu.org>
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 <ueno@gnu.org>
+
+ * 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
+ <https://lists.gnu.org/archive/html/bug-gettext/2013-08/msg00043.html>.
+
2013-11-11 Daiki Ueno <ueno@gnu.org>
* 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