From: Bruno Haible Date: Mon, 6 Apr 2020 12:07:01 +0000 (+0200) Subject: xgettext: Freshly initialize all static variables for each input file. X-Git-Tag: v0.21~109 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=00b4f7b15f799d02c61ceb87b9feddd692a1fbee;p=thirdparty%2Fgettext.git xgettext: Freshly initialize all static variables for each input file. * gettext-tools/src/x-c.c (extract_whole_file): Initialize phase1_pushback_length, phase2_pushback_length, phase3_pushback_length, phase5_pushback_length, phase6_pushback_length. * gettext-tools/src/x-csharp.c (extract_csharp): Initialize phase1_pushback_length, phase2_pushback_length, phase3_pushback_length, phase5_pushback_length, phase6_pushback_length, phase7_pushback_length. * gettext-tools/src/x-java.c (extract_java): Initialize phase1_pushback_length, phase2_pushback_length, phase3_pushback_length, phase5_pushback_length, phase6_pushback_length. * gettext-tools/src/x-javascript.c (continuation_or_nonblank_line, last_token_type): Remove static initialization. (extract_javascript): Initialize phase1_pushback_length, phase2_pushback_length, phase5_pushback_length, last_token_type. * gettext-tools/src/x-lua.c (first_character): Change type to 'bool'. Remove static initialization. (extract_lua): Initialize phase1_pushback_length, first_character, phase3_pushback_length, phase4_last, phase4_pushback_length. * gettext-tools/src/x-perl.c (extract_perl): Reorder initializations. * gettext-tools/src/x-php.c (extract_php): Initialize phase1_pushback_length, phase3_pushback_length, phase4_pushback_length. * gettext-tools/src/x-python.c (continuation_or_nonblank_line): Remove static initialization. (extract_python): Initialize phase1_pushback_length, phase2_pushback_length, phase5_pushback_length. * gettext-tools/src/x-sh.c (extract_sh): Initialize phase1_pushback_length, phase2_pushback_length. * gettext-tools/src/x-smalltalk.c (extract_smalltalk): Initialize phase2_pushback_length, phase3_pushback_length. * gettext-tools/src/x-tcl.c (extract_tcl): Initialize phase1_pushback_length, phase2_pushback_length. * gettext-tools/src/x-vala.c (last_token_type): Remove static initialization. (extract_vala): Initialize phase1_pushback_length, phase3_pushback_length, last_token_type. * gettext-tools/src/x-ycp.c (extract_ycp): Initialize phase2_pushback_length, phase5_pushback_length, phase8_pushback_length. --- diff --git a/gettext-tools/src/x-c.c b/gettext-tools/src/x-c.c index de99a707c..f4e6522ab 100644 --- a/gettext-tools/src/x-c.c +++ b/gettext-tools/src/x-c.c @@ -1,5 +1,5 @@ /* xgettext C/C++/ObjectiveC backend. - Copyright (C) 1995-1998, 2000-2009, 2012-2015, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 1995-1998, 2000-2009, 2012-2015, 2018-2020 Free Software Foundation, Inc. This file was written by Peter Miller @@ -2344,9 +2344,16 @@ extract_whole_file (FILE *f, logical_file_name = xstrdup (logical_filename); line_number = 1; - newline_count = 0; + phase1_pushback_length = 0; + phase2_pushback_length = 0; + phase3_pushback_length = 0; + last_comment_line = -1; last_non_comment_line = -1; + newline_count = 0; + + phase5_pushback_length = 0; + phase6_pushback_length = 0; flag_context_list_table = flag_table; diff --git a/gettext-tools/src/x-csharp.c b/gettext-tools/src/x-csharp.c index 71678b3ef..2fb48f98c 100644 --- a/gettext-tools/src/x-csharp.c +++ b/gettext-tools/src/x-csharp.c @@ -1,5 +1,5 @@ /* xgettext C# backend. - Copyright (C) 2003-2009, 2011, 2014, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2003-2009, 2011, 2014, 2018-2020 Free Software Foundation, Inc. Written by Bruno Haible , 2003. This program is free software: you can redistribute it and/or modify @@ -2056,12 +2056,23 @@ extract_csharp (FILE *f, logical_file_name = xstrdup (logical_filename); line_number = 1; + phase1_pushback_length = 0; + lexical_context = lc_outside; + phase2_pushback_length = 0; + logical_line_number = 1; + + phase3_pushback_length = 0; + last_comment_line = -1; last_non_comment_line = -1; + phase5_pushback_length = 0; + phase6_pushback_length = 0; + phase7_pushback_length = 0; + flag_context_list_table = flag_table; init_keywords (); diff --git a/gettext-tools/src/x-java.c b/gettext-tools/src/x-java.c index 64a7f2b64..577304f6a 100644 --- a/gettext-tools/src/x-java.c +++ b/gettext-tools/src/x-java.c @@ -1,5 +1,5 @@ /* xgettext Java backend. - Copyright (C) 2003, 2005-2009, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2003, 2005-2009, 2018-2020 Free Software Foundation, Inc. Written by Bruno Haible , 2003. This program is free software: you can redistribute it and/or modify @@ -1694,9 +1694,15 @@ extract_java (FILE *f, logical_file_name = xstrdup (logical_filename); line_number = 1; + phase1_pushback_length = 0; + phase2_pushback_length = 0; + phase3_pushback_length = 0; + last_comment_line = -1; last_non_comment_line = -1; + phase5_pushback_length = 0; + phase6_pushback_length = 0; phase6_last = token_type_eof; flag_context_list_table = flag_table; diff --git a/gettext-tools/src/x-javascript.c b/gettext-tools/src/x-javascript.c index 4823b295c..564abd3a9 100644 --- a/gettext-tools/src/x-javascript.c +++ b/gettext-tools/src/x-javascript.c @@ -1,5 +1,5 @@ /* xgettext JavaScript backend. - Copyright (C) 2002-2003, 2005-2009, 2013-2014, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2005-2009, 2013-2014, 2018-2020 Free Software Foundation, Inc. This file was written by Andreas Stricker , 2010 It's based on x-python from Bruno Haible. @@ -512,7 +512,7 @@ static iconv_t xgettext_current_file_source_iconv; /* Tracking whether the current line is a continuation line or contains a non-blank character. */ -static bool continuation_or_nonblank_line = false; +static bool continuation_or_nonblank_line; /* Phase 3: Outside strings, replace backslash-newline with nothing and a @@ -892,7 +892,7 @@ phase7_getuc (int quote_char) static token_ty phase5_pushback[2]; static int phase5_pushback_length; -static token_type_ty last_token_type = token_type_other; +static token_type_ty last_token_type; static void phase5_scan_regexp (void) @@ -1713,16 +1713,15 @@ extract_javascript (FILE *f, logical_file_name = xstrdup (logical_filename); line_number = 1; + phase1_pushback_length = 0; + lexical_context = lc_outside; + phase2_pushback_length = 0; + last_comment_line = -1; last_non_comment_line = -1; - template_literal_depth = 0; - new_brace_depth_level (); - xml_element_depth = 0; - inside_embedded_js_in_xml = false; - xgettext_current_file_source_encoding = (xgettext_global_source_encoding != NULL ? xgettext_global_source_encoding : po_charset_ascii); @@ -1737,6 +1736,14 @@ extract_javascript (FILE *f, continuation_or_nonblank_line = false; + phase5_pushback_length = 0; + last_token_type = token_type_other; + + template_literal_depth = 0; + new_brace_depth_level (); + xml_element_depth = 0; + inside_embedded_js_in_xml = false; + flag_context_list_table = flag_table; init_keywords (); diff --git a/gettext-tools/src/x-lua.c b/gettext-tools/src/x-lua.c index 25970fea9..5dbc94c68 100644 --- a/gettext-tools/src/x-lua.c +++ b/gettext-tools/src/x-lua.c @@ -1,5 +1,5 @@ /* xgettext Lua backend. - Copyright (C) 2012-2013, 2016, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2012-2013, 2016, 2018-2020 Free Software Foundation, Inc. This file was written by Ľubomír Remák , 2012. @@ -138,7 +138,7 @@ static FILE *fp; static unsigned char phase1_pushback[2]; static int phase1_pushback_length; -static int first_character = 1; +static bool first_character; static int phase1_getc () @@ -153,7 +153,7 @@ phase1_getc () if (first_character) { - first_character = 0; + first_character = false; /* Ignore shebang line. No pushback required in this case. */ if (c == '#') @@ -1213,9 +1213,17 @@ extract_lua (FILE *f, logical_file_name = xstrdup (logical_filename); line_number = 1; + phase1_pushback_length = 0; + first_character = true; + last_comment_line = -1; last_non_comment_line = -1; + phase3_pushback_length = 0; + + phase4_last = token_type_eof; + phase4_pushback_length = 0; + flag_context_list_table = flag_table; init_keywords (); diff --git a/gettext-tools/src/x-perl.c b/gettext-tools/src/x-perl.c index e16f9b608..58892cddf 100644 --- a/gettext-tools/src/x-perl.c +++ b/gettext-tools/src/x-perl.c @@ -1,5 +1,5 @@ /* xgettext Perl backend. - Copyright (C) 2002-2010, 2013, 2016, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2002-2010, 2013, 2016, 2018-2020 Free Software Foundation, Inc. This file was written by Guido Flohr , 2002-2010. @@ -218,6 +218,8 @@ static FILE *fp; /* The current line buffer. */ static char *linebuf; +/* The size of the input buffer. */ +static size_t linebuf_size; /* The size of the current line. */ static int linesize; @@ -225,9 +227,6 @@ static int linesize; /* The position in the current line. */ static int linepos; -/* The size of the input buffer. */ -static size_t linebuf_size; - /* Number of lines eaten for here documents. */ static int eaten_here; @@ -3553,23 +3552,24 @@ extract_perl (FILE *f, const char *real_filename, const char *logical_filename, logical_file_name = xstrdup (logical_filename); line_number = 0; + linesize = 0; + linepos = 0; + eaten_here = 0; + end_of_file = false; + last_comment_line = -1; last_non_comment_line = -1; flag_context_list_table = flag_table; - init_keywords (); + /* Safe assumption. */ + last_token_type = token_type_semicolon; token_stack.items = NULL; token_stack.nitems = 0; token_stack.nitems_max = 0; - linesize = 0; - linepos = 0; - eaten_here = 0; - end_of_file = false; - /* Safe assumption. */ - last_token_type = token_type_semicolon; + init_keywords (); /* Eat tokens until eof is seen. When extract_balanced returns due to an unbalanced closing brace, just restart it. */ diff --git a/gettext-tools/src/x-php.c b/gettext-tools/src/x-php.c index cccb9dc2d..410790961 100644 --- a/gettext-tools/src/x-php.c +++ b/gettext-tools/src/x-php.c @@ -1,5 +1,5 @@ /* xgettext PHP backend. - Copyright (C) 2001-2003, 2005-2010, 2014, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2005-2010, 2014, 2018-2020 Free Software Foundation, Inc. This file was written by Bruno Haible , 2002. @@ -1583,9 +1583,17 @@ extract_php (FILE *f, logical_file_name = xstrdup (logical_filename); line_number = 1; + phase1_pushback_length = 0; +#if 0 + phase2_pushback_length = 0; +#endif + last_comment_line = -1; last_non_comment_line = -1; + phase3_pushback_length = 0; + phase4_pushback_length = 0; + phase5_last = token_type_eof; flag_context_list_table = flag_table; diff --git a/gettext-tools/src/x-python.c b/gettext-tools/src/x-python.c index a27669eec..ed319f13a 100644 --- a/gettext-tools/src/x-python.c +++ b/gettext-tools/src/x-python.c @@ -1,5 +1,5 @@ /* xgettext Python backend. - Copyright (C) 2002-2003, 2005-2011, 2013-2014, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2005-2011, 2013-2014, 2018-2020 Free Software Foundation, Inc. This file was written by Bruno Haible , 2002. @@ -695,7 +695,7 @@ try_to_extract_coding (const char *comment) /* Tracking whether the current line is a continuation line or contains a non-blank character. */ -static bool continuation_or_nonblank_line = false; +static bool continuation_or_nonblank_line; /* Phase 3: Outside strings, replace backslash-newline with nothing and a @@ -1693,8 +1693,12 @@ extract_python (FILE *f, logical_file_name = xstrdup (logical_filename); line_number = 1; + phase1_pushback_length = 0; + lexical_context = lc_outside; + phase2_pushback_length = 0; + last_comment_line = -1; last_non_comment_line = -1; @@ -1716,6 +1720,8 @@ extract_python (FILE *f, open_pbb = 0; + phase5_pushback_length = 0; + flag_context_list_table = flag_table; init_keywords (); diff --git a/gettext-tools/src/x-sh.c b/gettext-tools/src/x-sh.c index 341f7027f..2868e4031 100644 --- a/gettext-tools/src/x-sh.c +++ b/gettext-tools/src/x-sh.c @@ -1,5 +1,5 @@ /* xgettext sh backend. - Copyright (C) 2003, 2005-2009, 2014, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2003, 2005-2009, 2014, 2018-2020 Free Software Foundation, Inc. Written by Bruno Haible , 2003. This program is free software: you can redistribute it and/or modify @@ -1516,6 +1516,8 @@ extract_sh (FILE *f, logical_file_name = xstrdup (logical_filename); line_number = 1; + phase1_pushback_length = 0; + last_comment_line = -1; last_non_comment_line = -1; @@ -1524,6 +1526,8 @@ extract_sh (FILE *f, open_doublequote = false; open_singlequote = false; + phase2_pushback_length = 0; + flag_context_list_table = flag_table; init_keywords (); diff --git a/gettext-tools/src/x-smalltalk.c b/gettext-tools/src/x-smalltalk.c index 1a2b60998..d84b307eb 100644 --- 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, 2011, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2005-2009, 2011, 2018-2020 Free Software Foundation, Inc. This file was written by Bruno Haible , 2002. @@ -517,6 +517,9 @@ extract_smalltalk (FILE *f, last_comment_line = -1; last_non_comment_line = -1; + phase2_pushback_length = 0; + phase3_pushback_length = 0; + /* Eat tokens until eof is seen. */ { /* 0 when no "NLS" has been seen. diff --git a/gettext-tools/src/x-tcl.c b/gettext-tools/src/x-tcl.c index 1be2bcbfa..6c347a7cb 100644 --- a/gettext-tools/src/x-tcl.c +++ b/gettext-tools/src/x-tcl.c @@ -1,5 +1,5 @@ /* xgettext Tcl backend. - Copyright (C) 2002-2003, 2005-2009, 2013, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2005-2009, 2013, 2018-2020 Free Software Foundation, Inc. This file was written by Bruno Haible , 2002. @@ -986,6 +986,9 @@ extract_tcl (FILE *f, logical_file_name = xstrdup (logical_filename); line_number = 1; + phase1_pushback_length = 0; + phase2_pushback_length = 0; + /* Initially, no brace is open. */ brace_depth = 1000000; diff --git a/gettext-tools/src/x-vala.c b/gettext-tools/src/x-vala.c index 49e822d7a..1e8b26bfe 100644 --- a/gettext-tools/src/x-vala.c +++ b/gettext-tools/src/x-vala.c @@ -1,5 +1,5 @@ /* xgettext Vala backend. - Copyright (C) 2013-2014, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2013-2014, 2018-2020 Free Software Foundation, Inc. This file was written by Daiki Ueno , 2013. @@ -591,7 +591,7 @@ static token_ty phase3_pushback[2]; static int phase3_pushback_length; -static token_type_ty last_token_type = token_type_other; +static token_type_ty last_token_type; static void phase3_scan_regex () @@ -1392,9 +1392,14 @@ extract_vala (FILE *f, logical_file_name = xstrdup (logical_filename); line_number = 1; + phase1_pushback_length = 0; + last_comment_line = -1; last_non_comment_line = -1; + phase3_pushback_length = 0; + last_token_type = token_type_other; + flag_context_list_table = flag_table; init_keywords (); diff --git a/gettext-tools/src/x-ycp.c b/gettext-tools/src/x-ycp.c index 51c4cb3b3..5097b5748 100644 --- 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, 2011, 2018-2019 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2005-2009, 2011, 2018-2020 Free Software Foundation, Inc. This file was written by Bruno Haible , 2001. @@ -805,6 +805,10 @@ extract_ycp (FILE *f, last_comment_line = -1; last_non_comment_line = -1; + phase2_pushback_length = 0; + phase5_pushback_length = 0; + phase8_pushback_length = 0; + flag_context_list_table = flag_table; /* Eat tokens until eof is seen. When extract_parenthesized returns