Blame SOURCES/gettext-0.19.8.1-CVE-2018-18751.patch

930b2f
From dce3a16e5e9368245735e29bf498dcd5e3e474a4 Mon Sep 17 00:00:00 2001
930b2f
From: Daiki Ueno <ueno@gnu.org>
930b2f
Date: Thu, 15 Sep 2016 13:57:24 +0200
930b2f
Subject: [PATCH] xgettext: Fix crash with *.po file input
930b2f
930b2f
When xgettext was given two *.po files with the same msgid_plural, it
930b2f
crashed with double-free.  Problem reported by Davlet Panech in:
930b2f
http://lists.gnu.org/archive/html/bug-gettext/2016-09/msg00001.html
930b2f
930b2f
praiskup:
930b2f
- I dropped the testsuite part, otherwise we'd have to 'autoreconf -vif' the
930b2f
  sources
930b2f
- I'm patching manually the po-gram-gen.c file to avoid 'bison' BR
930b2f
930b2f
diff --git a/gettext-tools/src/po-gram-gen.y b/gettext-tools/src/po-gram-gen.y
930b2f
index becf5e607..4428e7725 100644
930b2f
--- a/gettext-tools/src/po-gram-gen.y
930b2f
+++ b/gettext-tools/src/po-gram-gen.y
930b2f
@@ -221,14 +221,11 @@ message
930b2f
                   check_obsolete ($1, $3);
930b2f
                   check_obsolete ($1, $4);
930b2f
                   if (!$1.obsolete || pass_obsolete_entries)
930b2f
-                    {
930b2f
-                      do_callback_message ($1.ctxt, string2, &$1.pos, $3.string,
930b2f
-                                           $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos,
930b2f
-                                           $1.prev_ctxt,
930b2f
-                                           $1.prev_id, $1.prev_id_plural,
930b2f
-                                           $1.obsolete);
930b2f
-                      free ($3.string);
930b2f
-                    }
930b2f
+                    do_callback_message ($1.ctxt, string2, &$1.pos, $3.string,
930b2f
+                                         $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos,
930b2f
+                                         $1.prev_ctxt,
930b2f
+                                         $1.prev_id, $1.prev_id_plural,
930b2f
+                                         $1.obsolete);
930b2f
                   else
930b2f
                     {
930b2f
                       free_message_intro ($1);
930b2f
diff --git a/gettext-tools/src/read-catalog.c b/gettext-tools/src/read-catalog.c
930b2f
index 571d18e1b..6af6d2025 100644
930b2f
--- a/gettext-tools/src/read-catalog.c
930b2f
+++ b/gettext-tools/src/read-catalog.c
930b2f
@@ -397,6 +397,8 @@ default_add_message (default_catalog_reader_ty *this,
930b2f
          appropriate.  */
930b2f
       mp = message_alloc (msgctxt, msgid, msgid_plural, msgstr, msgstr_len,
930b2f
                           msgstr_pos);
930b2f
+      if (msgid_plural != NULL)
930b2f
+        free (msgid_plural);
930b2f
       mp->prev_msgctxt = prev_msgctxt;
930b2f
       mp->prev_msgid = prev_msgid;
930b2f
       mp->prev_msgid_plural = prev_msgid_plural;
930b2f
diff --git a/gettext-tools/src/po-gram-gen.c b/gettext-tools/src/po-gram-gen.c
930b2f
--- a/gettext-tools/src/po-gram-gen.c
930b2f
+++ b/gettext-tools/src/po-gram-gen.c
930b2f
@@ -1,8 +1,8 @@
930b2f
-/* A Bison parser, made by GNU Bison 3.0.4.  */
930b2f
+/* A Bison parser, made by GNU Bison 3.0.5.  */
930b2f
 
930b2f
 /* Bison implementation for Yacc-like parsers in C
930b2f
 
930b2f
-   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
930b2f
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
930b2f
 
930b2f
    This program is free software: you can redistribute it and/or modify
930b2f
    it under the terms of the GNU General Public License as published by
930b2f
@@ -44,7 +44,7 @@
930b2f
 #define YYBISON 1
930b2f
 
930b2f
 /* Bison version.  */
930b2f
-#define YYBISON_VERSION "3.0.4"
930b2f
+#define YYBISON_VERSION "3.0.5"
930b2f
 
930b2f
 /* Skeleton name.  */
930b2f
 #define YYSKELETON_NAME "yacc.c"
930b2f
@@ -568,9 +568,9 @@
930b2f
 static const yytype_uint16 yyrline[] =
930b2f
 {
930b2f
        0,   169,   169,   171,   172,   173,   174,   179,   187,   195,
930b2f
-     216,   240,   249,   258,   269,   278,   292,   301,   315,   321,
930b2f
-     332,   338,   350,   361,   372,   376,   391,   414,   422,   434,
930b2f
-     442
930b2f
+     216,   237,   246,   255,   266,   275,   289,   298,   312,   318,
930b2f
+     329,   335,   347,   358,   369,   373,   388,   411,   419,   431,
930b2f
+     439
930b2f
 };
930b2f
 #endif
930b2f
 
930b2f
@@ -1054,6 +1054,7 @@
930b2f
       case N:                               \
930b2f
         yyformat = S;                       \
930b2f
       break
930b2f
+    default: /* Avoid compiler warnings. */
930b2f
       YYCASE_(0, YY_("syntax error"));
930b2f
       YYCASE_(1, YY_("syntax error, unexpected %s"));
930b2f
       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
930b2f
@@ -1370,23 +1371,23 @@
930b2f
   switch (yyn)
930b2f
     {
930b2f
         case 7:
930b2f
-#line 180 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 180 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   po_callback_comment_dispatcher ((yyvsp[0].string).string);
930b2f
                 }
930b2f
-#line 1378 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1379 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 8:
930b2f
-#line 188 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 188 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                    po_callback_domain ((yyvsp[0].string).string);
930b2f
                 }
930b2f
-#line 1386 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1387 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 9:
930b2f
-#line 196 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 196 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   char *string2 = string_list_concat_destroy (&(yyvsp[-2].stringlist).stringlist);
930b2f
                   char *string4 = string_list_concat_destroy (&(yyvsp[0].stringlist).stringlist);
930b2f
@@ -1407,11 +1408,11 @@
930b2f
                       free (string4);
930b2f
                     }
930b2f
                 }
930b2f
-#line 1411 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1412 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 10:
930b2f
-#line 217 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 217 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   char *string2 = string_list_concat_destroy (&(yyvsp[-2].stringlist).stringlist);
930b2f
 
930b2f
@@ -1419,14 +1420,11 @@
930b2f
                   check_obsolete ((yyvsp[-3].message_intro), (yyvsp[-1].string));
930b2f
                   check_obsolete ((yyvsp[-3].message_intro), (yyvsp[0].rhs));
930b2f
                   if (!(yyvsp[-3].message_intro).obsolete || pass_obsolete_entries)
930b2f
-                    {
930b2f
-                      do_callback_message ((yyvsp[-3].message_intro).ctxt, string2, &(yyvsp[-3].message_intro).pos, (yyvsp[-1].string).string,
930b2f
-                                           (yyvsp[0].rhs).rhs.msgstr, (yyvsp[0].rhs).rhs.msgstr_len, &(yyvsp[0].rhs).pos,
930b2f
-                                           (yyvsp[-3].message_intro).prev_ctxt,
930b2f
-                                           (yyvsp[-3].message_intro).prev_id, (yyvsp[-3].message_intro).prev_id_plural,
930b2f
-                                           (yyvsp[-3].message_intro).obsolete);
930b2f
-                      free ((yyvsp[-1].string).string);
930b2f
-                    }
930b2f
+                    do_callback_message ((yyvsp[-3].message_intro).ctxt, string2, &(yyvsp[-3].message_intro).pos, (yyvsp[-1].string).string,
930b2f
+                                         (yyvsp[0].rhs).rhs.msgstr, (yyvsp[0].rhs).rhs.msgstr_len, &(yyvsp[0].rhs).pos,
930b2f
+                                         (yyvsp[-3].message_intro).prev_ctxt,
930b2f
+                                         (yyvsp[-3].message_intro).prev_id, (yyvsp[-3].message_intro).prev_id_plural,
930b2f
+                                         (yyvsp[-3].message_intro).obsolete);
930b2f
                   else
930b2f
                     {
930b2f
                       free_message_intro ((yyvsp[-3].message_intro));
930b2f
@@ -1435,11 +1433,11 @@
930b2f
                       free ((yyvsp[0].rhs).rhs.msgstr);
930b2f
                     }
930b2f
                 }
930b2f
-#line 1439 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1437 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 11:
930b2f
-#line 241 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 238 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-2].message_intro), (yyvsp[-1].stringlist));
930b2f
                   check_obsolete ((yyvsp[-2].message_intro), (yyvsp[0].string));
930b2f
@@ -1448,11 +1446,11 @@
930b2f
                   string_list_destroy (&(yyvsp[-1].stringlist).stringlist);
930b2f
                   free ((yyvsp[0].string).string);
930b2f
                 }
930b2f
-#line 1452 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1450 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 12:
930b2f
-#line 250 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 247 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-2].message_intro), (yyvsp[-1].stringlist));
930b2f
                   check_obsolete ((yyvsp[-2].message_intro), (yyvsp[0].rhs));
930b2f
@@ -1461,22 +1459,22 @@
930b2f
                   string_list_destroy (&(yyvsp[-1].stringlist).stringlist);
930b2f
                   free ((yyvsp[0].rhs).rhs.msgstr);
930b2f
                 }
930b2f
-#line 1465 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1463 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 13:
930b2f
-#line 259 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 256 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-1].message_intro), (yyvsp[0].stringlist));
930b2f
                   po_gram_error_at_line (&(yyvsp[-1].message_intro).pos, _("missing 'msgstr' section"));
930b2f
                   free_message_intro ((yyvsp[-1].message_intro));
930b2f
                   string_list_destroy (&(yyvsp[0].stringlist).stringlist);
930b2f
                 }
930b2f
-#line 1476 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1474 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 14:
930b2f
-#line 270 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 267 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   (yyval.message_intro).prev_ctxt = NULL;
930b2f
                   (yyval.message_intro).prev_id = NULL;
930b2f
@@ -1485,11 +1483,11 @@
930b2f
                   (yyval.message_intro).pos = (yyvsp[0].string).pos;
930b2f
                   (yyval.message_intro).obsolete = (yyvsp[0].string).obsolete;
930b2f
                 }
930b2f
-#line 1489 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1487 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 15:
930b2f
-#line 279 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 276 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-1].prev), (yyvsp[0].string));
930b2f
                   (yyval.message_intro).prev_ctxt = (yyvsp[-1].prev).ctxt;
930b2f
@@ -1499,11 +1497,11 @@
930b2f
                   (yyval.message_intro).pos = (yyvsp[0].string).pos;
930b2f
                   (yyval.message_intro).obsolete = (yyvsp[0].string).obsolete;
930b2f
                 }
930b2f
-#line 1503 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1501 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 16:
930b2f
-#line 293 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 290 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-1].string), (yyvsp[0].stringlist));
930b2f
                   (yyval.prev).ctxt = (yyvsp[-1].string).string;
930b2f
@@ -1512,11 +1510,11 @@
930b2f
                   (yyval.prev).pos = (yyvsp[-1].string).pos;
930b2f
                   (yyval.prev).obsolete = (yyvsp[-1].string).obsolete;
930b2f
                 }
930b2f
-#line 1516 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1514 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 17:
930b2f
-#line 302 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 299 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-2].string), (yyvsp[-1].stringlist));
930b2f
                   check_obsolete ((yyvsp[-2].string), (yyvsp[0].string));
930b2f
@@ -1526,21 +1524,21 @@
930b2f
                   (yyval.prev).pos = (yyvsp[-2].string).pos;
930b2f
                   (yyval.prev).obsolete = (yyvsp[-2].string).obsolete;
930b2f
                 }
930b2f
-#line 1530 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1528 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 18:
930b2f
-#line 316 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 313 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   (yyval.string).string = NULL;
930b2f
                   (yyval.string).pos = (yyvsp[0].pos).pos;
930b2f
                   (yyval.string).obsolete = (yyvsp[0].pos).obsolete;
930b2f
                 }
930b2f
-#line 1540 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1538 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 19:
930b2f
-#line 322 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 319 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-2].pos), (yyvsp[-1].stringlist));
930b2f
                   check_obsolete ((yyvsp[-2].pos), (yyvsp[0].pos));
930b2f
@@ -1548,21 +1546,21 @@
930b2f
                   (yyval.string).pos = (yyvsp[0].pos).pos;
930b2f
                   (yyval.string).obsolete = (yyvsp[0].pos).obsolete;
930b2f
                 }
930b2f
-#line 1552 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1550 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 20:
930b2f
-#line 333 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 330 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   (yyval.string).string = NULL;
930b2f
                   (yyval.string).pos = (yyvsp[0].pos).pos;
930b2f
                   (yyval.string).obsolete = (yyvsp[0].pos).obsolete;
930b2f
                 }
930b2f
-#line 1562 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1560 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 21:
930b2f
-#line 339 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 336 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-2].pos), (yyvsp[-1].stringlist));
930b2f
                   check_obsolete ((yyvsp[-2].pos), (yyvsp[0].pos));
930b2f
@@ -1570,11 +1568,11 @@
930b2f
                   (yyval.string).pos = (yyvsp[0].pos).pos;
930b2f
                   (yyval.string).obsolete = (yyvsp[0].pos).obsolete;
930b2f
                 }
930b2f
-#line 1574 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1572 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 22:
930b2f
-#line 351 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 348 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-1].pos), (yyvsp[0].stringlist));
930b2f
                   plural_counter = 0;
930b2f
@@ -1582,30 +1580,30 @@
930b2f
                   (yyval.string).pos = (yyvsp[-1].pos).pos;
930b2f
                   (yyval.string).obsolete = (yyvsp[-1].pos).obsolete;
930b2f
                 }
930b2f
-#line 1586 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1584 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 23:
930b2f
-#line 362 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 359 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-1].pos), (yyvsp[0].stringlist));
930b2f
                   (yyval.string).string = string_list_concat_destroy (&(yyvsp[0].stringlist).stringlist);
930b2f
                   (yyval.string).pos = (yyvsp[-1].pos).pos;
930b2f
                   (yyval.string).obsolete = (yyvsp[-1].pos).obsolete;
930b2f
                 }
930b2f
-#line 1597 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1595 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 24:
930b2f
-#line 373 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 370 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   (yyval.rhs) = (yyvsp[0].rhs);
930b2f
                 }
930b2f
-#line 1605 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1603 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 25:
930b2f
-#line 377 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 374 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-1].rhs), (yyvsp[0].rhs));
930b2f
                   (yyval.rhs).rhs.msgstr = XNMALLOC ((yyvsp[-1].rhs).rhs.msgstr_len + (yyvsp[0].rhs).rhs.msgstr_len, char);
930b2f
@@ -1617,11 +1615,11 @@
930b2f
                   (yyval.rhs).pos = (yyvsp[-1].rhs).pos;
930b2f
                   (yyval.rhs).obsolete = (yyvsp[-1].rhs).obsolete;
930b2f
                 }
930b2f
-#line 1621 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1619 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 26:
930b2f
-#line 392 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 389 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-4].pos), (yyvsp[-3].pos));
930b2f
                   check_obsolete ((yyvsp[-4].pos), (yyvsp[-2].number));
930b2f
@@ -1640,11 +1638,11 @@
930b2f
                   (yyval.rhs).pos = (yyvsp[-4].pos).pos;
930b2f
                   (yyval.rhs).obsolete = (yyvsp[-4].pos).obsolete;
930b2f
                 }
930b2f
-#line 1644 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1642 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 27:
930b2f
-#line 415 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 412 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   string_list_init (&(yyval.stringlist).stringlist);
930b2f
                   string_list_append (&(yyval.stringlist).stringlist, (yyvsp[0].string).string);
930b2f
@@ -1652,11 +1650,11 @@
930b2f
                   (yyval.stringlist).pos = (yyvsp[0].string).pos;
930b2f
                   (yyval.stringlist).obsolete = (yyvsp[0].string).obsolete;
930b2f
                 }
930b2f
-#line 1656 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1654 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 28:
930b2f
-#line 423 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 420 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-1].stringlist), (yyvsp[0].string));
930b2f
                   (yyval.stringlist).stringlist = (yyvsp[-1].stringlist).stringlist;
930b2f
@@ -1665,11 +1663,11 @@
930b2f
                   (yyval.stringlist).pos = (yyvsp[-1].stringlist).pos;
930b2f
                   (yyval.stringlist).obsolete = (yyvsp[-1].stringlist).obsolete;
930b2f
                 }
930b2f
-#line 1669 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1667 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 29:
930b2f
-#line 435 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 432 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   string_list_init (&(yyval.stringlist).stringlist);
930b2f
                   string_list_append (&(yyval.stringlist).stringlist, (yyvsp[0].string).string);
930b2f
@@ -1677,11 +1675,11 @@
930b2f
                   (yyval.stringlist).pos = (yyvsp[0].string).pos;
930b2f
                   (yyval.stringlist).obsolete = (yyvsp[0].string).obsolete;
930b2f
                 }
930b2f
-#line 1681 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1679 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
   case 30:
930b2f
-#line 443 "po-gram-gen.y" /* yacc.c:1646  */
930b2f
+#line 440 "po-gram-gen.y" /* yacc.c:1648  */
930b2f
     {
930b2f
                   check_obsolete ((yyvsp[-1].stringlist), (yyvsp[0].string));
930b2f
                   (yyval.stringlist).stringlist = (yyvsp[-1].stringlist).stringlist;
930b2f
@@ -1690,11 +1688,11 @@
930b2f
                   (yyval.stringlist).pos = (yyvsp[-1].stringlist).pos;
930b2f
                   (yyval.stringlist).obsolete = (yyvsp[-1].stringlist).obsolete;
930b2f
                 }
930b2f
-#line 1694 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1692 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
     break;
930b2f
 
930b2f
 
930b2f
-#line 1698 "po-gram-gen.c" /* yacc.c:1646  */
930b2f
+#line 1696 "po-gram-gen.c" /* yacc.c:1648  */
930b2f
       default: break;
930b2f
     }
930b2f
   /* User semantic actions sometimes alter yychar, and that requires
930b2f
-- 
930b2f
2.19.1
930b2f