summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2012-05-29 19:01:27 +0200
committerRemi Collet <fedora@famillecollet.com>2012-05-29 19:01:27 +0200
commitceb63775e4a8b85590a0fa5878c508b42a11816b (patch)
tree43e2ce6e8149572c70b0eeedf154cb654b13d73b
parentc453f846c40e485d9bfd1b7cf1f5b623ce556a92 (diff)
add patch from debianHEADmaster
-rw-r--r--03-fix-xgettext-crash109
-rw-r--r--gettext.spec8
2 files changed, 116 insertions, 1 deletions
diff --git a/03-fix-xgettext-crash b/03-fix-xgettext-crash
new file mode 100644
index 0000000..d94223f
--- /dev/null
+++ b/03-fix-xgettext-crash
@@ -0,0 +1,109 @@
+From: Bruno Haible <bruno@clisp.org>
+Subject: Fix xgettext crash when extracting a message with plural that is excluded.
+Bug-Debian: http://bugs.debian.org/608181
+X-Debian-version: 0.18.1.1-4
+
+--- a/gettext-tools/src/xgettext.c
++++ b/gettext-tools/src/xgettext.c
+@@ -1,5 +1,5 @@
+ /* Extracts strings from C source file to Uniforum style .po file.
+- Copyright (C) 1995-1998, 2000-2010 Free Software Foundation, Inc.
++ Copyright (C) 1995-1998, 2000-2011 Free Software Foundation, Inc.
+ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, April 1995.
+
+ This program is free software: you can redistribute it and/or modify
+@@ -2933,7 +2933,7 @@
+ msgid_context,
+ &best_cp->msgid_pos,
+ NULL, best_cp->msgid_comment);
+- if (best_cp->msgid_plural != NULL)
++ if (mp != NULL && best_cp->msgid_plural != NULL)
+ remember_a_message_plural (mp, best_cp->msgid_plural,
+ msgid_plural_context,
+ &best_cp->msgid_plural_pos,
+--- a/gettext-tools/src/xgettext.h
++++ b/gettext-tools/src/xgettext.h
+@@ -1,5 +1,5 @@
+ /* xgettext common functions.
+- Copyright (C) 2001-2003, 2005-2006, 2008-2009 Free Software Foundation, Inc.
++ Copyright (C) 2001-2003, 2005-2006, 2008-2009, 2011 Free Software Foundation, Inc.
+ Written by Peter Miller <millerp@canb.auug.org.au>
+ and Bruno Haible <haible@clisp.cons.org>, 2001.
+
+@@ -247,7 +247,8 @@
+ or NULL.
+ COMMENT may be savable_comment, or it may be a saved copy of savable_comment
+ (then add_reference must be used when saving it, and drop_reference while
+- dropping it). Clear savable_comment. */
++ dropping it). Clear savable_comment.
++ Return the new or found message, or NULL if the message is excluded. */
+ extern message_ty *remember_a_message (message_list_ty *mlp,
+ char *msgctxt,
+ char *msgid,
+--- a/gettext-tools/src/x-smalltalk.c
++++ b/gettext-tools/src/x-smalltalk.c
+@@ -1,5 +1,5 @@
+ /* xgettext Smalltalk backend.
+- Copyright (C) 2002-2003, 2005-2009 Free Software Foundation, Inc.
++ Copyright (C) 2002-2003, 2005-2009, 2011 Free Software Foundation, Inc.
+
+ This file was written by Bruno Haible <haible@clisp.cons.org>, 2002.
+
+@@ -562,9 +562,10 @@
+ lex_pos_ty pos;
+ pos.file_name = logical_file_name;
+ pos.line_number = token.line_number;
+- remember_a_message_plural (plural_mp, token.string,
+- null_context, &pos,
+- savable_comment);
++ if (plural_mp != NULL)
++ remember_a_message_plural (plural_mp, token.string,
++ null_context, &pos,
++ savable_comment);
+ state = 0;
+ break;
+ }
+--- a/gettext-tools/src/x-ycp.c
++++ b/gettext-tools/src/x-ycp.c
+@@ -1,5 +1,5 @@
+ /* xgettext YCP backend.
+- Copyright (C) 2001-2003, 2005-2009 Free Software Foundation, Inc.
++ Copyright (C) 2001-2003, 2005-2009, 2011 Free Software Foundation, Inc.
+
+ This file was written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+@@ -640,6 +640,7 @@
+ bool in_i18n)
+ {
+ int state; /* 1 or 2 inside _( ... ), otherwise 0 */
++ int plural_state = 0; /* defined only when in states 1 and 2 */
+ message_ty *plural_mp = NULL; /* defined only when in states 1 and 2 */
+ /* Context iterator that will be used if the next token is a '('. */
+ flag_context_list_iterator_ty next_context_iter =
+@@ -678,20 +679,22 @@
+ pos.file_name = logical_file_name;
+ pos.line_number = token.line_number;
+
+- if (plural_mp == NULL)
++ if (plural_state == 0)
+ {
+ /* Seen an msgid. */
+ plural_mp = remember_a_message (mlp, NULL, token.string,
+ inner_context, &pos,
+ NULL, token.comment);
++ plural_state = 1;
+ state = 2;
+ }
+ else
+ {
+ /* Seen an msgid_plural. */
+- remember_a_message_plural (plural_mp, token.string,
+- inner_context, &pos,
+- token.comment);
++ if (plural_mp != NULL)
++ remember_a_message_plural (plural_mp, token.string,
++ inner_context, &pos,
++ token.comment);
+ state = 0;
+ }
+ drop_reference (token.comment);
diff --git a/gettext.spec b/gettext.spec
index 6684145..a13108e 100644
--- a/gettext.spec
+++ b/gettext.spec
@@ -6,7 +6,7 @@
Summary: GNU libraries and utilities for producing multi-lingual messages
Name: gettext
Version: 0.18.1.1
-Release: 13%{?dist}
+Release: 14%{?dist}
License: GPLv3+ and LGPLv2+
Group: Development/Tools
URL: http://www.gnu.org/software/gettext/
@@ -47,6 +47,8 @@ Conflicts: filesystem < 3
Provides: bundled(gnulib)
Provides: /bin/gettext
Patch1: gettext-readlink-einval.patch
+# From debian
+Patch2: 03-fix-xgettext-crash
%description
The GNU gettext package provides a set of tools and documentation for
@@ -133,6 +135,7 @@ Emacs.
%prep
%setup -q
%patch1 -p1 -b .orig
+%patch2 -p1 -b .crash
%build
@@ -332,6 +335,9 @@ fi
%{_emacs_sitelispdir}/%{name}/*.el
%changelog
+* Tue May 29 2012 Remi Collet <remi@fedoraproject.org> - 0.18.1.1-14
+- add patch from debian
+
* Thu May 17 2012 Jens Petersen <petersen@redhat.com> - 0.18.1.1-13
- base package now provides bundled(gnulib) to make it clear that
gettext is built with bundled gnulib (#821757)