2023-11-02         Arnold D. Robbins     <arnold@skeeve.com>

	* 5.3.0: Release tar ball made.

2023-10-31         Corinna Vinschen      <vinschen@redhat.com>

	* awk.h (wcitomb): Add declaration.
	* node.c (parse_escape): Use it on Cygwin.

2023-10-24         Arnold D. Robbins     <arnold@skeeve.com>

	* eval.c (setup_frame): Fix a potential use after free
	error. Thanks to Michal Jaegermann for the report.

2023-10-23         Arnold D. Robbins     <arnold@skeeve.com>

	* builtin.c (do_sub): Fix a use-after-free issue reported
	by Miguel Pineiro Jr. <mpj@pineiro.cc>.

2023-10-22         Arnold D. Robbins     <arnold@skeeve.com>

	* nonposix.h, re.c: Update coyright year.

2023-10-21         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (parse_args): Deal better with things if -p
	given twice. Thanks to Hermann Peifer for the report.
	* Checklist: Revised a bit.
	* awkgram.y (isnoeffect): Add Op_exec_count to the list so
	that `gawk --lint --profile BEGIN{0}' also produces a lint
	warning. Thanks yet again to Hermann Peifer.

2023-10-19         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.
	* README: Version bumped to 5.3.0. Updated info about makeinfo
	and texinfo.tex versions.

2023-10-17         Arnold D. Robbins     <arnold@skeeve.com>

	* re.c (make_regexp): Fix setting ok_to_escape.

2023-10-15         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Editing, in preparation for release.

2023-10-12         Eli Zaretskii  <eliz@gnu.org>

	* node.c (parse_escape) [__MINGW32__]: Use w32_wc_to_lc to convert
	Unicode codepoints.

	* nonposix.h (w32_wc_to_lc) [__MINGW32__]: Add prototype.

2023-10-08         Arnold D. Robbins     <arnold@skeeve.com>

	* node.c (parse_escape): Fix warning message for \u escape.
	* interpret.h (Op_lint_plus): Improve the test, especially
	for if dealing with user intput. Thanks to Hermann Peifer
	for the report.

2023-10-03         Arnold D. Robbins     <arnold@skeeve.com>

	* profile.c (pprint): Add case for Op_lint_plus. Thanks to
	Hermann Peifer for the report.

2023-09-19         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.

2023-09-13         Arnold D. Robbins     <arnold@skeeve.com>

	Fix handling of zero length matching in multibyte locales
	with sub/gsub. Thanks again to Ed Morton for the report.

	* builtin.c (do_sub): When the match is empty and we copy in
	the subsequent character, check gawk_mb_cur_max to know whether
	to copy one byte or multiple bytes.

2023-09-11         Arnold D. Robbins     <arnold@skeeve.com>

	* field.c (do_split): Fix some whitespace.

	Unrelated: Add do_csv variable to the API.

	* gawkapi.h: Bump major version to 4, minor version back to zero.
	(DO_FLAGS_SIZE): Increase to 7.
	(gawk_do_csv, do_csv): New macros.
	* gawkapi.c (init_ext_api): Init the do_csv element. Replace
	numeric indices with symbolic ones.
	* NEWS: Updated for do_csv in the API, and the major and
	minor API versions.

2023-09-01         Miguel Pineiro Jr     <mpj@pineiro.cc>

	Fix the handling of zero-length matches in multibyte locales.
	Thanks to Ed Morton <mortoneccc@comcast.net> for the report.

	* builtin.c (do_match): Translate rstart (byte idx to char idx)
	even when rlength is zero. For this we tweak the conversion of
	rlength to keep it in bounds when rstart and rlength are both 0.
	* node.c (str2wstr): Add an entry to the indices array for the
	terminating null. It facilitates the tweak above and is needed
	to translate the idx of a zero-width match at the end of the
	string.

2023-08-27         Arnold D. Robbins     <arnold@skeeve.com>

	* re.c (make_regexp): When do_traditional and looking to see
	if an escape created a metacharacter, use `metas' instead of
	a separate string, since BWK awk now also handles interval
	expressions. Found by inspection.

2023-08-25         Miguel Pineiro Jr     <mpj@pineiro.cc>

	* awk.h (enum escape_results): Fix ESCAPE_LINE_CONINUATION typo.
	* node.c (make_str_node): Ditto.
	* (parse_escape): Ditto.
	* re.c (make_regexp): Ditto.

	Unrelated: Use size_t for multibyte character lengths (aside
	from it being the type which the interfaces return, using it
	avoids implementation-defined behavior when -1 or -2 is cast
	to size_t then stored in an int).

	* node.c (make_str_node): Change mblen from int to size_t.

	Unrelated: Change the length of a translated escape sequence
	from int to size_t (to match the underlying interfaces).

	* awk.h (parse_escape): Change prototype.
	* node.c (make_str_node): Adjust to accomodate new type.
	* (parse_escape): Ditto.
	* re.c (make_regexp): Ditto.

	Unrelated: Clarify make_regexp, inspired by make_str_node.

	* re.c (make_regexp): Copy multibyte characters at once, move
	the escape sequence post-processing into the switch statement
	to explicitly connect a return value with its handling, add a
	default case to catch unrecognized values, and move ok_to_escape
	next to where it's used (and only set it once).

2023-08-21         Arnold D. Robbins     <arnold@skeeve.com>

	* node.c (make_str_node): Don't use N_() in cant_happen message.
	* re.c (make_regexp): Ditto.

2023-08-20         Arnold D. Robbins     <arnold@skeeve.com>

	Change parse_escape() to return an enum instead of relying
	on manifest constants.

	* awk.h (enum escape_results): New enum.
	(parse_escape): Now returns a value from it, add nbytes pointer
	parameter.
	* node.c (make_str_node): Revised to use switch/case on
	parse_escape return value.
	(parse_escape): Update code.
	* re.c (make_regexp): Revised to use switch/case on parse_escape
	return value.

2023-08-20         Miguel Pineiro Jr     <mpj@pineiro.cc>

	* awk.h (ELIDE_BACK_NL): Removed.
	(parse_escape): Update declaration.
	* main.c (cmdline_fs): Don't use ELIDE_BACK_NL.
	(arg_assign): Ditto.
	* node.c (make_str_node): Rework handling of return value
	from parse_escape.
	(parse_escape): Change return code to convey more info,
	fully parse escapes and handle conversion from unicode to
	UTF-8.
	* re.c (make_regexp): Rework for new interface to parse_escape.

2023-07-09         Arnold D. Robbins     <arnold@skeeve.com>

	* re.c (make_regexp): In error message, use the original text
	directly as a string and not with calculated length. Thanks
	to Neil R. Ormos <ormos-gnulists17@ormos.org> for the report.

2023-06-27         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.

2023-06-22         Arnold D. Robbins     <arnold@skeeve.com>

	* field.c (comma_parse_field): Don't set the field if len
	is zero. Kudos to BWK's awk for finding this gawk bug.

2023-06-12         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (cmdline_fs): Add ELIDE_BACK_NL to flags in call
	to make_str_node(). Fixes weirdness with -F. Thanks to
	Denys Vlasenko <dvlasenk@redhat.com> for the report.

2023-06-04         Arnold D. Robbins     <arnold@skeeve.com>

	* builtin.c (do_sub): Fix a Day 1 gensub bug, reported by
	Denys Vlasenko <dvlasenk@redhat.com>.

2023-06-02         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.

2023-05-07         Arnold D. Robbins     <arnold@skeeve.com>

	* 5.2.2: Release tar ball made.

2023-05-07         Arnold D. Robbins     <arnold@skeeve.com>

	* README: Update version.
	* debug.c: Update copyright year.

2023-04-22         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y, builtin.c, debug.c, eval.c, interpret.h,
	profile.c: Fix some implicit fall through warnings.
	Thanks to "Jannick" <thirdedition@gmx.net> for the report.

2023-04-21         Arnold D. Robbins     <arnold@skeeve.com>

	* array.c (asort_actual): Initialize `value' to avoid
	compiler complaints. Thanks to Michal Jaegermann
	for the report.
	* main.c (usage): Cast array subscript to int to silence
	a compiler warning. Thanks to "Jannick" <thirdedition@gmx.net>
	for the report.

2023-04-14         Arnold D. Robbins     <arnold@skeeve.com>

	* array.c (asort_actual): Handle Node_elem_new. Add braces
	for scoping, fixes tcc compiler error (GCC is too permissive!).
	Update copyright year.
	* Makefile.am, configure.ac, awk.h, agwkgram.y, builtin.c,
	command.y, eval.c, field.c, io.c, msg.c, node.c, profile.c,
	symbol.c: Update copyright year.

2023-04-13         Arnold D. Robbins     <arnold@skeeve.com>

	* array.c (asort_actual): Handle Node_var_new. Can happen
	if you sort SYMTAB. Thanks to zhou shuiqing
	<zhoushuiqing321@outlook.com> for the report.

2023-04-13         Andrew J. Schorr      <aschorr@telemetry-investments.com>

	* io.c (csvscan): Convert CR-LF pairs to plain LF, both at the
	end of the line and when embedded. Plain CRs are not touched.

2023-04-07         Andrew J. Schorr      <aschorr@telemetry-investments.com>

	* io.c (csvscan): Instead of stripping all carriage returns in the
	input, simply include the CR in the RT if it occurs just before
	the linefeed character.

2023-04-07         Arnold D. Robbins     <arnold@skeeve.com>

	* array.c (assoc_info): Update to handle additional cases so
	that one may dump SYMTAB or FUNCTAB. Issue reported by
	zhou shuiqing <zhoushuiqing321@outlook.com>.

2023-03-26         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.

2023-03-24         Arnold D. Robbins     <arnold@skeeve.com>

	Add support for \u escape sequence.

	* awk.h (parse_escaape): New bool* parameter for unicode.
	* node.c (make_str_node): Deal with a \u escape.
	(parse_escape): Handle \u.
	* re.c (make_regexp): Deal with a \u escape.

2023-03-24         Arnold D. Robbins     <arnold@skeeve.com>

	* io.c (set_RS): Fix first time and warning logic for csv mode.

2023-03-23         Arnold D. Robbins     <arnold@skeeve.com>

	* io.c (csvscan): Strip CRs.

2023-03-21         Manuel Collado        <mcollado2011@gmail.com>

	* io.c (csvscan): Real implementation.

2023-03-18         Miguel Pineiro Jr.    <mpj@pineiro.cc>

	Allow records longer than INT_MAX. For test cases,
	see https://lists.gnu.org/archive/html/bug-gawk/2021-05/msg00003.html.

	* awk.h (set_record): `cnt' is now size_t.
	* field.c (set_record): `cnt' is now size_t. Adjust databuf_size
	and MAX_SIZE macro.
	* io.c (get_a_record): Add new second parameter, size_t *len,
	which holds the size. Adjust return value meaning. Deal with
	return from an extension's get_a_record() function.
	(do_getline_redir): Adjust calling get_a_record().
	(do_getline): Ditto.
	(inrec): Ditto.

2023-03-17         Arnold D. Robbins     <arnold@skeeve.com>

	* field.c (do_split): Modify behavior for --csv.

2023-03-16         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (enum do_flag_values): Add DO_CSV.
	(do_csv): New macro.
	(init_csv_fields, init_csv_records): Add declarations.
	* field.c (init_csv_fields): New function.
	(set_parser): Don't set the parser if doing CSV. Add warnings.
	* io.c (csvscan): New function (placeholder for now).
	(init_csv_records): New function.
	(set_RS): Don't set the parser if doing CSV. Add warnings.
	* main.c (optab): Add new options -k/--csv.
	(main): Fatal out if --posix and --csv. Call init_csv_records()
	and init_csv_fields().
	(usage): Add a line for the new options.
	(load_procinfo): Install PROCINFO["CSV"] if doing CSV.
	(parse_args): Update for new options.

2023-03-09         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.h: Update copyright year. Small edit in leading comment.

	Unrelated:

	* NEWS: Updated. Update copyright year.

2023-03-07         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (optimize_assignment): Turn Op_store_field_exp
	into Op_store_field.  Add some explanatory comments.

2023-03-02         Arnold D. Robbins     <arnold@skeeve.com>

	* interpret.h (r_interpret): Revert this change of 2023-01-23,
	it's handled by the fix of 2023-02-27.

	| * interpret.h (r_interpret): Op_assign case, don't unref the
	| old lhs NODE until after the assignment. See test case in
	| the comment in the code and test/fieldassign.awk. Thanks to
	| Yasuhiro Yamada <yamada@gr3.ie> for the report.

	* gawkapi.h: Add a note at the top pointing to the online
	documentation, warning that the header file's comments aren't
	enough. Thanks to Eli Zaretskii <eliz@gnu.org> for the suggestion.

2023-02-27         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkmisc.c: Use #elif. Update copyright year.

	Unrelated: Fix handling of $a = $b so that it's done OK also in
	expressions, and not just in statements. This fixes a memory
	leak seen with valgrind in test/fieldassign.awk.

	* awk.h (enum opcodeval): Add new member, Op_store_field_exp.
	* awkgram.y (mk_assignment): Generate Op_store_field_exp under the
	right circumstances.
	(optimize_assignment): Remove case for Op_field_spec_lhs.
	* eval.c (optypes): Add entry for Op_store_field.
	* interpret.h (r_interpret): Handle Op_store_field in the switch.
	* profile.c (pprint): Same.

	Unrelated: Improve how information is passed to input parsers:

	* io.c (iop_alloc): lstat() or stat() the file if could not be opened.
	See the doc for explanation as to why.
	* NEWS: Updated.

2023-02-26         Arnold D. Robbins     <arnold@skeeve.com>

	* Multiple files: Remove trailing whitespace.

2023-02-24         Arnold D. Robbins     <arnold@skeeve.com>

	* field.c (set_comma_field): Free the string node. Fixes a
	memory leak. Thanks to Andrew Schorr for the report.

2023-02-24         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (boolval): Handle Node_var. Thanks to
	Daniel Pouzzner <douzzer@mega.nu> for the report, relayed
	by Andrew Schorr.
	* builtin.c (do_typeof): Handle Node_var, could come from a
	converted Node_elem_new. Thanks to Andrew Schorr for the
	report.

2023-02-23         Arnold D. Robbins     <arnold@skeeve.com>

	* io.c (find_input_parser): Improve check to see if iop is
	already being handled by an input parser. Found by
	code inspection.

	Unrelated:

	* awk.h (struct redirect): Change RED_NOBUF to RED_FLUSH.
	* builtin.c (efwrite): Ditto
	* io.c (redflags2str, check_duplicated_redirections,
	redirect_string): Ditto.

2023-02-12         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.

2023-02-10         Arnold D. Robbins     <arnold@skeeve.com>

	* io.c (avoid_flush): New function.
	(redirect_string): Use it when setting up an output pipeline.
	Thanks to Alexandre Ferrieux <alexandre.ferrieux@orange.com>
	for pointing out the performance issue.

2023-02-09         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (usage): Include URL for source code in the message.

2023-02-05         Arnold D. Robbins     <arnold@skeeve.com>

	* io.c (do_getline_redir): If `s' from get_a_record is NULL,
	pass "" to make_string() instead. Avoids undefined behavior
	complaint from GCC -fsanitize=undefined. Thanks to Sam James
	<sam@gentoo.org> for the report.
	(do_getline): Ditto.

2023-02-03         John E. Malmberg      <wb8tyw@qsl.net>

	* custom.h (bool) OpenVMS compilers may have a bool type

2023-02-02         John E. Malmberg      <wb8tyw@qsl.net>

	* custom.h (bool) OpenVMS compilers do not have a bool type

2023-01-31         Arnold D. Robbins     <arnold@skeeve.com>

	* interpret.h (r_interpret): For op_subscript, upref the variable
	if it's Node_var, also. Thanks to Volodymyr Gubarkov <xonixx@gmail.com>
	for the initial report and to Vincent Forest
	<vincent.forest@meso-star.com> for help in getting a small
	reproducer.
	Also, update the copyright year.

	* interpret.h (r_interpret): Op_assign case, don't unref the
	old lhs NODE until after the assignment. See test case in
	the comment in the code and test/fieldassign.awk. Thanks to
	Yasuhiro Yamada <yamada@gr3.ie> for the report.

2023-01-22         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c: Update copyright year.
	(check_pma_security): New routine.
	(main): Call it.
	(UPDATE_YEAR): Bump to 2023.
	* NEWS: Updated.

2023-01-03         Arnold D. Robbins     <arnold@skeeve.com>

	* README: Updated with texinfo.tex and makeinfo versions.
	Update copyright year.

2022-12-27         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (extra_stack): Remove variable and its uses. Left over
	from libsigsegv cleanup.

2022-12-23         Arnold D. Robbins     <arnold@skeeve.com>

	* README: Updated with texinfo.tex version.

2022-12-22         Arnold D. Robbins     <arnold@skeeve.com>

	* README: Updated with texinfo.tex version.
	* NEWS: Updated.

2022-12-11         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (load_procinfo): Remove "mb_cur_max" and "utf8"
	entries, they're not of any real use.
	* NEWS: Updated.

2022-12-11         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (get_pma_version): Add declaration.
	(load_procinfo): Use it to set PROCINFO["pma"] if PMA is in use.
	Thanks to J Naman for the feature suggestion.
	* NEWS: Updated.

2022-12-04         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.
	* awk.h (nextfree): Include dimension so we know how big it is.
	(pma_save_free_lists): Declare new function.
	* main.c (main): Call pma_save_free_lists() via atexit() upon exit.
	(parse_args): Call pma_mpfr_check() unconditionally.
	* symbol.c (struct root pointer): Add copy of nextfree[] array.
	(init_symbol_table): On first alloc, zero out the root_pointers
	struct. On subsequent uses, copy saved nextfree into real nextfree.
	(pma_mpfr_check): Check using_persistent_malloc and return early if
	not using it.
	(pma_save_free_lists): New function to save nextfree.

2022-12-01         Arnold D. Robbins     <arnold@skeeve.com>

	Disallow using / not using -M across invocations of gawk with
	a persistent heap.

	* awk.h (pma_mpfr_check): Add declaration.
	* symbol.c (pma_mpfr_check): New function. Enhance root pointer
	structure.
	* main.c (parse_args): Call pma_mpfr_check() if using persisent
	malloc.

2022-12-01         Arnold D. Robbins     <arnold@skeeve.com>

	* configure.ac: Removed use of libsigsegv.
	* main.c: Removed code related to libsigsegv.
	* NEWS: Updated.

2022-11-25         Arnold D. Robbins     <arnold@skeeve.com>

	* field.c (comma_parse_field): Remove unused variable `field'.

2022-11-23         Arnold D. Robbins     <arnold@skeeve.com>

	* msg.c: Update to GPL 3.  Thanks to Corinna Vinschen for
	noticing the GPL version issue.
	* Makefile.am (install-exec-hook): Check for existence of the
	gawk-x.y.z file before hard linking. Otherwise make in POSIX
	mode is unhappy. Thanks to Tzvetelin Katchov <katchov@gnu.org>
	for the report.

2022-11-17         Arnold D. Robbins     <arnold@skeeve.com>

	* 5.2.1: Release tar ball made.

2022-11-17         Arnold D. Robbins     <arnold@skeeve.com>

	* configure.ac: Update version.
	* README: Updated.

2022-11-01         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.

2022-10-28         Arnold D. Robbins     <arnold@skeeve.com>

	* Makefile.am (DEBUG): New variable with debug compilation flags.
	* configure.ac: Rework debug compilation to use DEBUG in Makefile.am
	and to add %no-lines to grammar files. Works around GDB issue
	with macros and #line directives. Thanks to Ulrich Drepper
	for the help and for the suggestions.

2022-10-26         Arnold D. Robbins     <arnold@skeeve.com>

	* configure.ac: Try to get macros to work in the debugger.

2022-10-25         Arnold D. Robbins     <arnold@skeeve.com>

	* interpret.h (r_interpret): For Op_push*, simplify the code for
	Node_var_new and Node_elem_new.

2022-10-23         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.
	* debug.c (execute_code): Comment out declaration and assignment of
	save_stack_size variable. It's not used anymore.
	* configure.ac: Sync code for .developing with extension/configure.ac.

2022-10-23         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (mk_binary): Check that divisor is a number before
	checking it's zero. Thanks to Ben Hoyt <benhoyt@gmail.com> for
	the report.

2022-10-20  Paul Eggert  <eggert@cs.ucla.edu>

	Port to current Gnulib
	Adjust to current Gnulib, which uses C23 style keywords for bool,
	true, false and static_assert, and assumes that <config.h>
	supplies compatibility macros on older systems.

	* awk.h: Do not include stdbool.h.
	* configure.ac: Use gl_C_BOOL, not AC_HEADER_STDBOOL.

2022-10-20         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.

2022-10-14         Andrew J. Schorr      <aschorr@telemetry-investments.com>

	* awkgram.y: Use Node_var_new instead of Node_var_array for
	a subscript expression.
	* gawkapi.c (api_sym_update): Make things smarter for dealing
	with an untyped variable that needs to become an array.

2022-10-14         Arnold D. Robbins     <arnold@skeeve.com>

	* symbol.c (make_symbol): Save and restore symbol_table in
	the root_pointers struct instead of using lookup.
	(func_count, var_count): Removed the variables and their uses.
	(get_symbols): Getting functions, use the_table->table_size for
	the count, not func_count.

2022-10-11         Arnold D. Robbins     <arnold@skeeve.com>

	* symbol.c (get_symbols): Getting variables, use
	the_table->table_size for the count, not var_count. Bug
	was tickled when using --dump-var together with persistent
	memory. (Why didn't valgrind catch this?)  Thanks to Hermann
	Peifer for the report. Thanks to Terence Kelly for detective work
	that helped pinpoint the search area for the bug.

2022-09-30         Arnold D. Robbins     <arnold@skeeve.com>

	* interpret.h (r_interpret): For the `push' opcodes with
	Node_elem_new, deref `m' before assigning m = dupnode(Nnull_string).
	Thanks to Andrew Schorr and valgrind for the report.

2022-09-23         Arnold D. Robbins     <arnold@skeeve.com>

	* interpret.h (r_interpret): For the `push' opcodes with
	Node_elem_new, put dupnode(Nnull_string) on the stack as
	the local value. Thanks to Jeff Chua <jeff.chua.linux@gmail.com>
	for the report.

2022-09-22         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkbug.in: Add attestation about not modifying the sources
	before building.

2022-09-19         Arnold D. Robbins     <arnold@skeeve.com>

	Fix negative NaN issues on RiscV. See bug list citation
	in the code.  Thanks to Andreas Schwab <schwab@suse.de>
	for the report.

	* eval.c (fix_nan_sign): New function.
	* interpret.h (r_interpret): Use it for plus and minus cases.

2022-09-16         Arnold D. Robbins     <arnold@skeeve.com>

	* debug.c (do_eval): If a fatal error occurs, don't attempt to
	recover, just restart. Thanks to Pascal Maugis
	<pascal.maugis@lsce.ipsl.fr> for the report.

2022-09-14         Arnold D. Robbins     <arnold@skeeve.com>

	* interpret.h (r_interpret): For the `push' opcodes, don't upref
	the Node_elem_new. Instead, convert the very original value to
	Node_var and use elem_new_to_scalar for the local variable.
	See test case elemnew3.awk. Thanks to Pascal Terjan <pterjan@gmail.com>
	for the report and test case.

2022-09-14         Arnold D. Robbins     <arnold@skeeve.com>

	* interpret.h (r_interpret): For the `push' opcodes, upref
	the Node_elem_new. See test case elemnew1. Thanks to
	Emanuel Attila Czirai <corre.a.buscar@gmail.com> for the report,
	and to Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
	for the fix.

2022-09-04         Arnold D. Robbins     <arnold@skeeve.com>

	* 5.2.0: Release tar ball made.

2022-09-04         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated with real URL of "MPFR is on parole."
	* configure.ac: Bump to release version.

2022-09-02         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.c, command.c: Regenerated, using Bison 3.8.2.

2022-09-01         Arnold D. Robbins     <arnold@skeeve.com>

	* field.c (do_split): Check for not do_posix if separator is comma.

2022-08-31         Arnold D. Robbins     <arnold@skeeve.com>

	* field.c (do_split): Make "," as third arg do CSV parsing.

2022-08-30         Arnold D. Robbins     <arnold@skeeve.com>

	* field.c (comma_parse_field): Add resizing of new field buffer;
	No Arbitrary Limits!

2022-08-29         Arnold D. Robbins     <arnold@skeeve.com>

	* field.c (comma_parse_field, set_comma_field): New functions.
	(set_FS): If FS is "," and not posix mode, use CSV parsing.
	Code follows what BWK's new code does.

2022-08-25         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (yyerror): Exit at the end, to make syntax errors
	immediately fatal. This prevents problems with fuzzer-generated
	programs at the cost of not continuing to diagnose subsequent
	problems. Oh well, too bad. Hooray for the fuzzers. Bleah.
	* NEWS: Updated.

2022-08-17         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Mention that VAX/VMS is no longer supported.
	* main.c (deprecate_mpfr): Removed the function for now. It
	was causing grief for the translators.
	* builtin.c (call_sub): Fix message text for indirect call
	to gensub. Thanks to Benno Schulenberg
	<coordinator@translationproject.org> for the report.

2022-08-16         Arnold D. Robbins     <arnold@skeeve.com>

	* configure.ac: Remove checks for memset_ulong and memcpy_ulong.
	* awk.h: Remove checks and macro definitions for those two
	functions. They used to be used in the PC code but were
	removed.

2022-08-14         Arnold D. Robbins     <arnold@skeeve.com>

	* awkgram.y (mk_binary): Check for division by constant zero in
	`/' and `%' when numerator is not a constant. Thanks to Ed Morton
	<mortoneccc@comcast.net> for the report.

2022-08-12         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Small update: mention pm-gawk.1 man page.

2022-08-11         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (get_pma_version): Check strchr() return value for
	close parenthesis.  Ooops.

2022-08-10         Arnold D. Robbins     <arnold@skeeve.com>

	* symbol.c (init_the_tables): New function.
	(init_symbol_table): Rework to make functions persistent also
	by saving in the root pointer a struct pointing to both the
	global table and the function table, and restoring this
	on subsequent runs.  The code ended up being nicely cleaner.

2022-08-08         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h: Include "floatmagic.h" here so that we no longer have to
	worry about it on an indvidiual file basis.
	* builtin.c, eval.c, node.c: Remove the include in these files.
	* configure.ac: Check for isnan in libm also. This may not
	be the right way to do this...

2022-08-08  Eli Zaretskii  <eliz@gnu.org>

	* nonposix.h [__MINGW32__]: Add prototype for strsignal.

	* awk.h (flags): Rename BOOL => BOOLVAL, to avoid conflicts with
	MS-Windows headers.  All users changed.

2022-08-07         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (get_pma_version): New function.
	(version): Call it.

	Unrelated:

	* eval.c: Include "floatmagic.h" as it also calls isnan().
	Thanks to John Malmberg for the report.

	Unrelated:

	* main.c (load_environ): Force ENVIRON_node to point to
	str_array_func before loading it. Fixes issues on MinGW
	while still solving the original `environ[0] = "0=foo"'
	problem. Move the call to init_env_array back to after the
	loop.

2022-08-06         John E. Malmberg      <wb8tyw@qsl.net>

	* custom.h: Update for new VMS Versions

2022-08-03         Arnold D. Robbins     <arnold@skeeve.com>

	* mpfr.c (mpfr_mem_alloc, mpfr_mem_realloc, mpfr_mem_free):
	New functions that just call malloc/realloc/free. Those are
	redefined to the pma_* functions if using pma.
	* awk.h (mpfr_mem_alloc, mpfr_mem_realloc, mpfr_mem_free):
	Add declarations.
	* main.c (main): Call mp_set_memory_functions with the new
	functions as arguments.

2022-08-03         Arnold D. Robbins     <arnold@skeeve.com>

	* builtin.c (format_tree): When collecting positional field widths or
	precisions, check for wrap around to negative values. Thanks to
	YU Jiongchi <jcyu.2022@phdcs.smu.edu.sg> for the report.

2022-07-29         Arnold D. Robbins     <arnold@skeeve.com>

	* builtin.c (efwrite): Check ferror() also, fixes some weird
	cases. Reported by Nikita Zlobin <cook60020tmp@mail.ru>.
	* io.c (gawk_fwrite): Remove static from definition.
	* awk.h (gawk_fwrite): Add declaration.

2022-07-27         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkapi.c (awk_value_to_node): Put tval declaration inside
	MPFR ifdef. Avoids warning if no MPFR when compiling.

2022-07-26         Arnold D. Robbins     <arnold@skeeve.com>

	* io.c (iopflags2str): Remove 'static' from declaration, causes
	the compiler to stop complaining. Thanks to Pat Rankin for the
	suggestion.
	* re.c (reflags2str): Ditto.
	* debug.c (debug_prog): Translate the "Restarting ..." message.
	Thanks to Antonio Colombo for pointing this out.

2022-07-22         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.

2022-07-21         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Updated.

2022-07-19         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (catchsig): Adjust error message in cant_happen() call.
	* configure.ac: Add check for strsignal function. It doesn't
	exist on z/OS.
	* replace.c: Include missing_d/strsignal.c if needed.

2022-07-18         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (main): Don't use fatal() if pma_init() fails, apparently
	it tries deep down to allocate memory.  Print return value and
	pma_errno value. Thanks to Terence Kelly for the analysis and
	suggestion.
	* custom.h (pma_errno): Define to 0 if not using persisent malloc.

2022-07-17         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (parse_args): Handle --persist with no argument to issue a
	better error message. Thanks to Terence Kelly for the suggestion.

2022-07-14         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkmisc.c, replace.c: Update copyright.

2022-07-11         Arnold D. Robbins     <arnold@skeeve.com>

	* Makefile.am (base_sources): Remove mbsupport.h.

2022-07-07         Arnold D. Robbins     <arnold@skeeve.com>

	* mbsupport.h: Removed.

2022-07-06         Arnold D. Robbins     <arnold@skeeve.com>

	* README: Updated. Remove mention of DJGPP.
	* awk.h, custom.h, eval.c, gawkmisc.c, io.c, main.c, nonposix.h,
	re.c, replace.c: Remove all code for __DJGPP__.

2022-07-03         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (TOP_SCALAR): Put converted value back on the stack
	for any subsequent use.

2022-06-30         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (POP_SCALAR): Convert Node_elem_new into a scalar.
	(TOP_SCALAR): Ditto.

	Unrelated:
	* README: Updated. Remove mention of OS/2.
	* awk.h, awgram.y. gawkmisc.c, io.c, main.c, nonposix.h:
	Remove all code for __EMX__.

2022-06-20         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: MPFR is now "on parole" instead of deprecated.
	* main.c (deprecate_mpfr): ifdef'ed out.
	(parse_args): Comment out call to deprecate_mpfr().

2022-06-20         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (optab): Add --persist.
	(parse_args): For --persist, fatal message to use the
	environment variable. Thanks to Terence Kelly for suggesting
	the option, since it's mentioned in his paper.

2022-06-17         Arnold D. Robbins     <arnold@skeeve.com>

	* NEWS: Typo fix.
	* main.c (main): Correct the return value check in the call
	to pma_init(). Thanks to Terence Kelly for the report.

2022-06-15         Andrew J. Schorr      <aschorr@telemetry-investments.com>

	* main.c (load_environ): Init ENVIRON_node before filling
	it. Fixes a crash if something like "0=foo" is the first thing
	in the environment. Thanks to David Arroyo <david@aqwari.net>
	for the report.

2022-06-14         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (main): Set gawk_name first thing, in case we fatal out
	on pma_init.
	* configure.ac: Add --disable-pma option.

2022-06-13         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (main): If persistent memory is not available and
	GAWK_PERSIST_FILE is supplied, issue a warnning. Similarly, don't
	do mtrace if using persistent malloc.
	(version): Include PMA version in the output.

2022-06-10         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (using_persistent_malloc): Declare new variable
	* main.c (main): Check for error from pma_init. Set
	using_persistent_malloc.
	* symbol.c (init_symbol_table): Check using_persistent_malloc
	appropriately. Adjust the flow for it.
	* NEWS: Updated.
	* Makefile.am (LDADD): Add $(LDFLAGS).
	* custom.h (pma_init): Define to 0.

2022-06-09         Arnold D. Robbins     <arnold@skeeve.com>

	* custom.h: Deal with use/non-use of persistent malloc.
	* main.c (main): Bracket mtrace call in #ifndef. Call pma_init()
	first thing.
	* configure.ac (GAWK_USE_PERSISTENT_MALLOC): Add call.

2022-06-06         Andrew J. Schorr      <aschorr@telemetry-investments.com>

	* gawkapi.h (gawk_api_t): Add new api_destroy_array hook to clear
	and free an array.
	(destroy_array): New macro wrapper for api_destroy_array.
	* gawkapi.c (api_destroy_array): Add new function to clear and free
	an array.
	(api_impl): Add hook for api_destroy_array.

2022-06-03         Arnold D. Robbins     <arnold@skeeve.com>

	* awk.h (elem_new_to_scalar): Add declaration.
	* eval.c (elem_new_to_scalar): No longer static. Make it handle
	things when valref is > 1. Returns a NODE * instead of being void.
	(cmp_scalars): Change usage of elem_new_to_scalar().
	* interpret.h (r_interpret): Op_push*: Make Node_elem_new into
	a separate case, using elem_new_to_scalar().
	* array.c (force_array): For Node_elem_new, clear symbol->stptr.
	* eval.r (r_get_lhs): Use efree() intstead of free() in Node_elem_new
	case.

2022-06-02         Arnold D. Robbins     <arnold@skeeve.com>

	* builtin.c (do_sub): Fix memory corruption when substituting
	into a value that is a typed regex. Thanks to valgrind.

2022-06-02         Arnold D. Robbins     <arnold@skeeve.com>

	Fix a nasty memory corruption problem. Thanks to
	Andrew Schorr for the report.

	* eval.c (r_get_lhs): Handle Node_elem_new separately
	to free the string value. This was not the problem.
	* interpret.h (r_interpret): For Op_assign, when turning
	Node_elem_new into the null string, DEREF the old value
	and dupnode the new one. THIS was the problem.

2022-05-24         Adam Van Scyoc        <avanscy@g.clemson.edu>

	* awkgram.y (make_assignable): Handle Op_field_assign.
	Avoids a core dump upon a certain kind of syntax error;
	see test/getlnfa.awk.

2022-05-22         Arnold D. Robbins     <arnold@skeeve.com>

	* array.c (force_array): When converting Node_elem_new to an array,
	release the string storage. Thanks to valgrind, by way of Andrew
	Schorr, for the report.

2022-05-11         Arnold D. Robbins     <arnold@skeeve.com>

	* profile.c (pp_list): Typo fix in a comment.

2022-05-10         Arnold D. Robbins     <arnold@skeeve.com>

	* gawkbug.in: Add attestation for having read bug reporting
	section in the manual. (Yes, I'm pretty paranoid.)

2022-05-03         Arnold D. Robbins     <arnold@skeeve.com>

	* main.c (deprecate_mpfr): New function.
	(parse_args): Call it for -M.

2022-04-28         Arnold D. Robbins     <arnold@skeeve.com>

	Disallow SYMTAB["x"]["y"]. Reported by Jason C. Kwan.

	* interpret.h (r_interpret): Add checks at Op_sub_array case.

