]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
po-gram: fix memory leaks
authorDaiki Ueno <ueno@gnu.org>
Thu, 29 Aug 2013 03:33:37 +0000 (12:33 +0900)
committerDaiki Ueno <ueno@gnu.org>
Mon, 2 Sep 2013 05:23:51 +0000 (14:23 +0900)
gettext-tools/src/ChangeLog
gettext-tools/src/po-gram-gen.y

index 7a8872fff57041435c4c392eb814443c6577fc4d..cb77c96343bcb22f6f2c62105bf743d95ff9e540 100644 (file)
@@ -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-08-13  Miguel Angel Arruga Vivas  <rosen644835@gmail.com>
 
        * x-glade.c (start_element_glade1): Use extract_all variable.
index bdc568aab4a77f1ae82d9d6de02f4e91dfe1821a..8f888bddc4c4e40520927722c6bbed5bf932bdb8 100644 (file)
@@ -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;
                 }