From ceb63775e4a8b85590a0fa5878c508b42a11816b Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 29 May 2012 19:01:27 +0200 Subject: add patch from debian --- 03-fix-xgettext-crash | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++ gettext.spec | 8 +++- 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 03-fix-xgettext-crash 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 +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 , 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 + and Bruno Haible , 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 , 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 , 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 - 0.18.1.1-14 +- add patch from debian + * Thu May 17 2012 Jens Petersen - 0.18.1.1-13 - base package now provides bundled(gnulib) to make it clear that gettext is built with bundled gnulib (#821757) -- cgit