diff --git a/pcre2-10.34-Ensure-a-newline-after-the-final-line-in-a-file-is-o.patch b/pcre2-10.34-Ensure-a-newline-after-the-final-line-in-a-file-is-o.patch
new file mode 100644
index 0000000..910f113
--- /dev/null
+++ b/pcre2-10.34-Ensure-a-newline-after-the-final-line-in-a-file-is-o.patch
@@ -0,0 +1,598 @@
+From b3f42a32920b20ae71988bc1d06a7148e0211925 Mon Sep 17 00:00:00 2001
+From: ph10
+Date: Sat, 25 Jan 2020 15:50:44 +0000
+Subject: [PATCH] Ensure a newline after the final line in a file is output by
+ pcre2grep.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@1211 6239d852-aaf2-0410-a92c-79f79f948069
+Petr Písař: Ported to 10.34.
+---
+ RunGrepTest | 4 +-
+ doc/html/pcre2grep.html | 84 ++++++++++++++++++++-------------
+ doc/pcre2grep.1 | 83 ++++++++++++++++++++-------------
+ doc/pcre2grep.txt | 100 ++++++++++++++++++++++++----------------
+ src/pcre2grep.c | 66 ++++++++++++++++++++++++--
+ testdata/grepoutputN | 16 ++++---
+
+diff --git a/RunGrepTest b/RunGrepTest
+index 1113cd4..2ff4f7c 100755
+--- a/RunGrepTest
++++ b/RunGrepTest
+@@ -742,11 +742,11 @@ uname=`uname`
+ case $uname in
+ Linux)
+ printf 'abc\0def' >testNinputgrep
+- $valgrind $vjs $pcre2grep -na --newline=nul "^(abc|def)" testNinputgrep | sed 's/\x00/ZERO/' >>testtrygrep
++ $valgrind $vjs $pcre2grep -na --newline=nul "^(abc|def)" testNinputgrep | sed 's/\x00/ZERO/g' >>testtrygrep
+ echo "" >>testtrygrep
+ ;;
+ *)
+- echo '1:abcZERO2:def' >>testtrygrep
++ echo '1:abcZERO2:defZERO' >>testtrygrep
+ ;;
+ esac
+
+diff --git a/doc/html/pcre2grep.html b/doc/html/pcre2grep.html
+index f5b72f3..abbafa1 100644
+--- a/doc/html/pcre2grep.html
++++ b/doc/html/pcre2grep.html
+@@ -148,7 +148,7 @@ ignored.
+ By default, a file that contains a binary zero byte within the first 1024 bytes
+ is identified as a binary file, and is processed specially. (GNU grep
+ identifies binary files in this manner.) However, if the newline type is
+-specified as "nul", that is, the line terminator is a binary zero, the test for
++specified as NUL, that is, the line terminator is a binary zero, the test for
+ a binary file is not applied. See the --binary-files option for a means
+ of changing the way binary files are handled.
+
+@@ -601,25 +601,32 @@ does not work when input is read line by line (see \fP--line-buffered\fP.)
+
+
+ -N newline-type, --newline=newline-type
+-The PCRE2 library supports five different conventions for indicating
+-the ends of lines. They are the single-character sequences CR (carriage return)
+-and LF (linefeed), the two-character sequence CRLF, an "anycrlf" convention,
+-which recognizes any of the preceding three types, and an "any" convention, in
+-which any Unicode line ending sequence is assumed to end a line. The Unicode
+-sequences are the three just mentioned, plus VT (vertical tab, U+000B), FF
+-(form feed, U+000C), NEL (next line, U+0085), LS (line separator, U+2028), and
+-PS (paragraph separator, U+2029).
++Six different conventions for indicating the ends of lines in scanned files are
++supported. For example:
++
++ pcre2grep -N CRLF 'some pattern' <file>
++
++The newline type may be specified in upper, lower, or mixed case. If the
++newline type is NUL, lines are separated by binary zero characters. The other
++types are the single-character sequences CR (carriage return) and LF
++(linefeed), the two-character sequence CRLF, an "anycrlf" type, which
++recognizes any of the preceding three types, and an "any" type, for which any
++Unicode line ending sequence is assumed to end a line. The Unicode sequences
++are the three just mentioned, plus VT (vertical tab, U+000B), FF (form feed,
++U+000C), NEL (next line, U+0085), LS (line separator, U+2028), and PS
++(paragraph separator, U+2029).
+
+
+ When the PCRE2 library is built, a default line-ending sequence is specified.
+ This is normally the standard sequence for the operating system. Unless
+ otherwise specified by this option, pcre2grep uses the library's default.
+-The possible values for this option are CR, LF, CRLF, ANYCRLF, or ANY. This
+-makes it possible to use pcre2grep to scan files that have come from
+-other environments without having to modify their line endings. If the data
+-that is being scanned does not agree with the convention set by this option,
+-pcre2grep may behave in strange ways. Note that this option does not
+-apply to files specified by the -f, --exclude-from, or
++
++
++This option makes it possible to use pcre2grep to scan files that have
++come from other environments without having to modify their line endings. If
++the data that is being scanned does not agree with the convention set by this
++option, pcre2grep may behave in strange ways. Note that this option does
++not apply to files specified by the -f, --exclude-from, or
+ --include-from options, which are expected to use the operating system's
+ standard newline sequence.
+
+@@ -640,12 +647,14 @@ use of JIT at run time. It is provided for testing and working round problems.
+ It should never be needed in normal use.
+
+
+--O text, --output=text
++-O text, --output=text
+ When there is a match, instead of outputting the whole line that matched,
+-output just the given text. This option is mutually exclusive with
+---only-matching, --file-offsets, and --line-offsets. Escape
+-sequences starting with a dollar character may be used to insert the contents
+-of the matched part of the line and/or captured substrings into the text.
++output just the given text, followed by an operating-system standard newline.
++The --newline option has no effect on this option, which is mutually
++exclusive with --only-matching, --file-offsets, and
++--line-offsets. Escape sequences starting with a dollar character may be
++used to insert the contents of the matched part of the line and/or captured
++substrings into the text.
+
+
+ $<digits> or ${<digits>} is replaced by the captured
+@@ -807,16 +816,27 @@ by the --locale option. If no locale is set, the PCRE2 library's default
+
NEWLINES
+
+ The -N (--newline) option allows pcre2grep to scan files with
+-different newline conventions from the default. Any parts of the input files
+-that are written to the standard output are copied identically, with whatever
+-newline sequences they have in the input. However, the setting of this option
+-affects only the way scanned files are processed. It does not affect the
+-interpretation of files specified by the -f, --file-list,
+---exclude-from, or --include-from options, nor does it affect the
+-way in which pcre2grep writes informational messages to the standard
+-error and output streams. For these it uses the string "\n" to indicate
+-newlines, relying on the C I/O library to convert this to an appropriate
+-sequence.
++newline conventions that differ from the default. This option affects only the
++way scanned files are processed. It does not affect the interpretation of files
++specified by the -f, --file-list, --exclude-from, or
++--include-from options.
++
++
++Any parts of the scanned input files that are written to the standard output
++are copied with whatever newline sequences they have in the input. However, if
++the final line of a file is output, and it does not end with a newline
++sequence, a newline sequence is added. If the newline setting is CR, LF, CRLF
++or NUL, that line ending is output; for the other settings (ANYCRLF or ANY) a
++single NL is used.
++
++
++The newline setting does not affect the way in which pcre2grep writes
++newlines in informational messages to the standard output and error streams.
++Under Windows, the standard output is set to be binary, so that "\r\n" at the
++ends of output lines that are copied from the input is not converted to
++"\r\r\n" by the C I/O library. This means that any messages written to the
++standard output must end with "\r\n". For all other operating systems, and
++for all messages to the standard error stream, "\n" is used.
+
+
OPTIONS COMPATIBILITY
+
+@@ -992,9 +1012,9 @@ Cambridge, England.
+
+
REVISION
+
+-Last updated: 15 June 2019
++Last updated: 25 January 2020
+
+-Copyright © 1997-2019 University of Cambridge.
++Copyright © 1997-2020 University of Cambridge.
+
+
+ Return to the PCRE2 index page.
+diff --git a/doc/pcre2grep.1 b/doc/pcre2grep.1
+index 22992b1..82f0435 100644
+--- a/doc/pcre2grep.1
++++ b/doc/pcre2grep.1
+@@ -1,4 +1,4 @@
+-.TH PCRE2GREP 1 "15 June 2019" "PCRE2 10.34"
++.TH PCRE2GREP 1 "25 January 2020" "PCRE2 10.35"
+ .SH NAME
+ pcre2grep - a grep with Perl-compatible regular expressions.
+ .SH SYNOPSIS
+@@ -117,7 +117,7 @@ ignored.
+ By default, a file that contains a binary zero byte within the first 1024 bytes
+ is identified as a binary file, and is processed specially. (GNU grep
+ identifies binary files in this manner.) However, if the newline type is
+-specified as "nul", that is, the line terminator is a binary zero, the test for
++specified as NUL, that is, the line terminator is a binary zero, the test for
+ a binary file is not applied. See the \fB--binary-files\fP option for a means
+ of changing the way binary files are handled.
+ .
+@@ -523,24 +523,30 @@ large processing buffer, this should not be a problem, but the \fB-M\fP option
+ does not work when input is read line by line (see \fP--line-buffered\fP.)
+ .TP
+ \fB-N\fP \fInewline-type\fP, \fB--newline\fP=\fInewline-type\fP
+-The PCRE2 library supports five different conventions for indicating
+-the ends of lines. They are the single-character sequences CR (carriage return)
+-and LF (linefeed), the two-character sequence CRLF, an "anycrlf" convention,
+-which recognizes any of the preceding three types, and an "any" convention, in
+-which any Unicode line ending sequence is assumed to end a line. The Unicode
+-sequences are the three just mentioned, plus VT (vertical tab, U+000B), FF
+-(form feed, U+000C), NEL (next line, U+0085), LS (line separator, U+2028), and
+-PS (paragraph separator, U+2029).
++Six different conventions for indicating the ends of lines in scanned files are
++supported. For example:
++.sp
++ pcre2grep -N CRLF 'some pattern'
++.sp
++The newline type may be specified in upper, lower, or mixed case. If the
++newline type is NUL, lines are separated by binary zero characters. The other
++types are the single-character sequences CR (carriage return) and LF
++(linefeed), the two-character sequence CRLF, an "anycrlf" type, which
++recognizes any of the preceding three types, and an "any" type, for which any
++Unicode line ending sequence is assumed to end a line. The Unicode sequences
++are the three just mentioned, plus VT (vertical tab, U+000B), FF (form feed,
++U+000C), NEL (next line, U+0085), LS (line separator, U+2028), and PS
++(paragraph separator, U+2029).
+ .sp
+ When the PCRE2 library is built, a default line-ending sequence is specified.
+ This is normally the standard sequence for the operating system. Unless
+ otherwise specified by this option, \fBpcre2grep\fP uses the library's default.
+-The possible values for this option are CR, LF, CRLF, ANYCRLF, or ANY. This
+-makes it possible to use \fBpcre2grep\fP to scan files that have come from
+-other environments without having to modify their line endings. If the data
+-that is being scanned does not agree with the convention set by this option,
+-\fBpcre2grep\fP may behave in strange ways. Note that this option does not
+-apply to files specified by the \fB-f\fP, \fB--exclude-from\fP, or
++.sp
++This option makes it possible to use \fBpcre2grep\fP to scan files that have
++come from other environments without having to modify their line endings. If
++the data that is being scanned does not agree with the convention set by this
++option, \fBpcre2grep\fP may behave in strange ways. Note that this option does
++not apply to files specified by the \fB-f\fP, \fB--exclude-from\fP, or
+ \fB--include-from\fP options, which are expected to use the operating system's
+ standard newline sequence.
+ .TP
+@@ -558,12 +564,14 @@ was explicitly disabled at build time. This option can be used to disable the
+ use of JIT at run time. It is provided for testing and working round problems.
+ It should never be needed in normal use.
+ .TP
+-\fB-O\fP \fItext\fP, \fB--output\fP=\fItext\fP
++\fB-O\fP \fItext\fP, \fB--output\fP=\fItext\fP
+ When there is a match, instead of outputting the whole line that matched,
+-output just the given text. This option is mutually exclusive with
+-\fB--only-matching\fP, \fB--file-offsets\fP, and \fB--line-offsets\fP. Escape
+-sequences starting with a dollar character may be used to insert the contents
+-of the matched part of the line and/or captured substrings into the text.
++output just the given text, followed by an operating-system standard newline.
++The \fB--newline\fP option has no effect on this option, which is mutually
++exclusive with \fB--only-matching\fP, \fB--file-offsets\fP, and
++\fB--line-offsets\fP. Escape sequences starting with a dollar character may be
++used to insert the contents of the matched part of the line and/or captured
++substrings into the text.
+ .sp
+ $ or ${} is replaced by the captured
+ substring of the given decimal number; zero substitutes the whole match. If
+@@ -709,16 +717,25 @@ by the \fB--locale\fP option. If no locale is set, the PCRE2 library's default
+ .rs
+ .sp
+ The \fB-N\fP (\fB--newline\fP) option allows \fBpcre2grep\fP to scan files with
+-different newline conventions from the default. Any parts of the input files
+-that are written to the standard output are copied identically, with whatever
+-newline sequences they have in the input. However, the setting of this option
+-affects only the way scanned files are processed. It does not affect the
+-interpretation of files specified by the \fB-f\fP, \fB--file-list\fP,
+-\fB--exclude-from\fP, or \fB--include-from\fP options, nor does it affect the
+-way in which \fBpcre2grep\fP writes informational messages to the standard
+-error and output streams. For these it uses the string "\en" to indicate
+-newlines, relying on the C I/O library to convert this to an appropriate
+-sequence.
++newline conventions that differ from the default. This option affects only the
++way scanned files are processed. It does not affect the interpretation of files
++specified by the \fB-f\fP, \fB--file-list\fP, \fB--exclude-from\fP, or
++\fB--include-from\fP options.
++.P
++Any parts of the scanned input files that are written to the standard output
++are copied with whatever newline sequences they have in the input. However, if
++the final line of a file is output, and it does not end with a newline
++sequence, a newline sequence is added. If the newline setting is CR, LF, CRLF
++or NUL, that line ending is output; for the other settings (ANYCRLF or ANY) a
++single NL is used.
++.P
++The newline setting does not affect the way in which \fBpcre2grep\fP writes
++newlines in informational messages to the standard output and error streams.
++Under Windows, the standard output is set to be binary, so that "\er\en" at the
++ends of output lines that are copied from the input is not converted to
++"\er\er\en" by the C I/O library. This means that any messages written to the
++standard output must end with "\er\en". For all other operating systems, and
++for all messages to the standard error stream, "\en" is used.
+ .
+ .
+ .SH "OPTIONS COMPATIBILITY"
+@@ -904,6 +921,6 @@ Cambridge, England.
+ .rs
+ .sp
+ .nf
+-Last updated: 15 June 2019
+-Copyright (c) 1997-2019 University of Cambridge.
++Last updated: 25 January 2020
++Copyright (c) 1997-2020 University of Cambridge.
+ .fi
+diff --git a/doc/pcre2grep.txt b/doc/pcre2grep.txt
+index b11092a..4d41f54 100644
+--- a/doc/pcre2grep.txt
++++ b/doc/pcre2grep.txt
+@@ -116,9 +116,9 @@ BINARY FILES
+ By default, a file that contains a binary zero byte within the first
+ 1024 bytes is identified as a binary file, and is processed specially.
+ (GNU grep identifies binary files in this manner.) However, if the new-
+- line type is specified as "nul", that is, the line terminator is a bi-
+- nary zero, the test for a binary file is not applied. See the --binary-
+- files option for a means of changing the way binary files are handled.
++ line type is specified as NUL, that is, the line terminator is a binary
++ zero, the test for a binary file is not applied. See the --binary-files
++ option for a means of changing the way binary files are handled.
+
+
+ BINARY ZEROS IN PATTERNS
+@@ -578,30 +578,36 @@ OPTIONS
+ when input is read line by line (see --line-buffered.)
+
+ -N newline-type, --newline=newline-type
+- The PCRE2 library supports five different conventions for in-
+- dicating the ends of lines. They are the single-character se-
+- quences CR (carriage return) and LF (linefeed), the two-char-
+- acter sequence CRLF, an "anycrlf" convention, which recog-
+- nizes any of the preceding three types, and an "any" conven-
+- tion, in which any Unicode line ending sequence is assumed to
+- end a line. The Unicode sequences are the three just men-
+- tioned, plus VT (vertical tab, U+000B), FF (form feed,
+- U+000C), NEL (next line, U+0085), LS (line separator,
+- U+2028), and PS (paragraph separator, U+2029).
++ Six different conventions for indicating the ends of lines in
++ scanned files are supported. For example:
++
++ pcre2grep -N CRLF 'some pattern'
++
++ The newline type may be specified in upper, lower, or mixed
++ case. If the newline type is NUL, lines are separated by bi-
++ nary zero characters. The other types are the single-charac-
++ ter sequences CR (carriage return) and LF (linefeed), the
++ two-character sequence CRLF, an "anycrlf" type, which recog-
++ nizes any of the preceding three types, and an "any" type,
++ for which any Unicode line ending sequence is assumed to end
++ a line. The Unicode sequences are the three just mentioned,
++ plus VT (vertical tab, U+000B), FF (form feed, U+000C), NEL
++ (next line, U+0085), LS (line separator, U+2028), and PS
++ (paragraph separator, U+2029).
+
+ When the PCRE2 library is built, a default line-ending se-
+ quence is specified. This is normally the standard sequence
+ for the operating system. Unless otherwise specified by this
+- option, pcre2grep uses the library's default. The possible
+- values for this option are CR, LF, CRLF, ANYCRLF, or ANY.
+- This makes it possible to use pcre2grep to scan files that
+- have come from other environments without having to modify
+- their line endings. If the data that is being scanned does
+- not agree with the convention set by this option, pcre2grep
+- may behave in strange ways. Note that this option does not
+- apply to files specified by the -f, --exclude-from, or --in-
+- clude-from options, which are expected to use the operating
+- system's standard newline sequence.
++ option, pcre2grep uses the library's default.
++
++ This option makes it possible to use pcre2grep to scan files
++ that have come from other environments without having to mod-
++ ify their line endings. If the data that is being scanned
++ does not agree with the convention set by this option,
++ pcre2grep may behave in strange ways. Note that this option
++ does not apply to files specified by the -f, --exclude-from,
++ or --include-from options, which are expected to use the op-
++ erating system's standard newline sequence.
+
+ -n, --line-number
+ Precede each output line by its line number in the file, fol-
+@@ -620,11 +626,13 @@ OPTIONS
+
+ -O text, --output=text
+ When there is a match, instead of outputting the whole line
+- that matched, output just the given text. This option is mu-
+- tually exclusive with --only-matching, --file-offsets, and
+- --line-offsets. Escape sequences starting with a dollar char-
+- acter may be used to insert the contents of the matched part
+- of the line and/or captured substrings into the text.
++ that matched, output just the given text, followed by an op-
++ erating-system standard newline. The --newline option has no
++ effect on this option, which is mutually exclusive with
++ --only-matching, --file-offsets, and --line-offsets. Escape
++ sequences starting with a dollar character may be used to in-
++ sert the contents of the matched part of the line and/or cap-
++ tured substrings into the text.
+
+ $ or ${} is replaced by the captured sub-
+ string of the given decimal number; zero substitutes the
+@@ -780,17 +788,27 @@ ENVIRONMENT VARIABLES
+
+ NEWLINES
+
+- The -N (--newline) option allows pcre2grep to scan files with different
+- newline conventions from the default. Any parts of the input files that
+- are written to the standard output are copied identically, with what-
+- ever newline sequences they have in the input. However, the setting of
+- this option affects only the way scanned files are processed. It does
+- not affect the interpretation of files specified by the -f, --file-
+- list, --exclude-from, or --include-from options, nor does it affect the
+- way in which pcre2grep writes informational messages to the standard
+- error and output streams. For these it uses the string "\n" to indicate
+- newlines, relying on the C I/O library to convert this to an appropri-
+- ate sequence.
++ The -N (--newline) option allows pcre2grep to scan files with newline
++ conventions that differ from the default. This option affects only the
++ way scanned files are processed. It does not affect the interpretation
++ of files specified by the -f, --file-list, --exclude-from, or --in-
++ clude-from options.
++
++ Any parts of the scanned input files that are written to the standard
++ output are copied with whatever newline sequences they have in the in-
++ put. However, if the final line of a file is output, and it does not
++ end with a newline sequence, a newline sequence is added. If the new-
++ line setting is CR, LF, CRLF or NUL, that line ending is output; for
++ the other settings (ANYCRLF or ANY) a single NL is used.
++
++ The newline setting does not affect the way in which pcre2grep writes
++ newlines in informational messages to the standard output and error
++ streams. Under Windows, the standard output is set to be binary, so
++ that "\r\n" at the ends of output lines that are copied from the input
++ is not converted to "\r\r\n" by the C I/O library. This means that any
++ messages written to the standard output must end with "\r\n". For all
++ other operating systems, and for all messages to the standard error
++ stream, "\n" is used.
+
+
+ OPTIONS COMPATIBILITY
+@@ -963,5 +981,5 @@ AUTHOR
+
+ REVISION
+
+- Last updated: 15 June 2019
+- Copyright (c) 1997-2019 University of Cambridge.
++ Last updated: 25 January 2020
++ Copyright (c) 1997-2020 University of Cambridge.
+diff --git a/src/pcre2grep.c b/src/pcre2grep.c
+index 12fe95e..10314a5 100644
+--- a/src/pcre2grep.c
++++ b/src/pcre2grep.c
+@@ -13,7 +13,7 @@ distribution because other apparatus is needed to compile pcre2grep for z/OS.
+ The header can be found in the special z/OS distribution, which is available
+ from www.zaconsultants.net or from www.cbttape.org.
+
+- Copyright (c) 1997-2019 University of Cambridge
++ Copyright (c) 1997-2020 University of Cambridge
+
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+@@ -1665,6 +1665,44 @@ switch(endlinetype)
+
+
+
++/*************************************************
++* Output newline at end *
++*************************************************/
++
++/* This function is called if the final line of a file has been written to
++stdout, but it does not have a terminating newline.
++
++Arguments: none
++Returns: nothing
++*/
++
++static void
++write_final_newline(void)
++{
++switch(endlinetype)
++ {
++ default: /* Just in case */
++ case PCRE2_NEWLINE_LF:
++ case PCRE2_NEWLINE_ANY:
++ case PCRE2_NEWLINE_ANYCRLF:
++ fprintf(stdout, "\n");
++ break;
++
++ case PCRE2_NEWLINE_CR:
++ fprintf(stdout, "\r");
++ break;
++
++ case PCRE2_NEWLINE_CRLF:
++ fprintf(stdout, "\r\n");
++ break;
++
++ case PCRE2_NEWLINE_NUL:
++ fprintf(stdout, "%c", 0);
++ break;
++ }
++}
++
++
+ /*************************************************
+ * Print the previous "after" lines *
+ *************************************************/
+@@ -1689,9 +1727,9 @@ do_after_lines(unsigned long int lastmatchnumber, char *lastmatchrestart,
+ if (after_context > 0 && lastmatchnumber > 0)
+ {
+ int count = 0;
++ int ellength = 0;
+ while (lastmatchrestart < endptr && count < after_context)
+ {
+- int ellength;
+ char *pp = end_of_line(lastmatchrestart, endptr, &ellength);
+ if (ellength == 0 && pp == main_buffer + bufsize) break;
+ if (printname != NULL) fprintf(stdout, "%s-", printname);
+@@ -1700,7 +1738,17 @@ if (after_context > 0 && lastmatchnumber > 0)
+ lastmatchrestart = pp;
+ count++;
+ }
+- if (count > 0) hyphenpending = TRUE;
++
++ /* If we have printed any lines, arrange for a hyphen separator if anything
++ else follows. Also, if the last line is the final line in the file and it had
++ no newline, add one. */
++
++ if (count > 0)
++ {
++ hyphenpending = TRUE;
++ if (ellength == 0 && lastmatchrestart >= endptr)
++ write_final_newline();
++ }
+ }
+ }
+
+@@ -2437,6 +2485,7 @@ char *endptr;
+ PCRE2_SIZE bufflength;
+ BOOL binary = FALSE;
+ BOOL endhyphenpending = FALSE;
++BOOL lines_printed = FALSE;
+ BOOL input_line_buffered = line_buffered;
+ FILE *in = NULL; /* Ensure initialized */
+
+@@ -2777,6 +2826,8 @@ while (ptr < endptr)
+
+ else
+ {
++ lines_printed = TRUE;
++
+ /* See if there is a requirement to print some "after" lines from a
+ previous match. We never print any overlaps. */
+
+@@ -2825,7 +2876,8 @@ while (ptr < endptr)
+ int linecount = 0;
+ char *p = ptr;
+
+- while (p > main_buffer && (lastmatchnumber == 0 || p > lastmatchrestart) &&
++ while (p > main_buffer &&
++ (lastmatchnumber == 0 || p > lastmatchrestart) &&
+ linecount < before_context)
+ {
+ linecount++;
+@@ -2981,6 +3033,12 @@ while (ptr < endptr)
+
+ lastmatchrestart = ptr + linelength + endlinelength;
+ lastmatchnumber = linenumber + 1;
++
++ /* If a line was printed and we are now at the end of the file and the last
++ line had no newline, output one. */
++
++ if (lines_printed && lastmatchrestart >= endptr && endlinelength == 0)
++ write_final_newline();
+ }
+
+ /* For a match in multiline inverted mode (which of course did not cause
+diff --git a/testdata/grepoutputN b/testdata/grepoutputN
+index ba97e90..caaeb75 100644
+--- a/testdata/grepoutputN
++++ b/testdata/grepoutputN
+@@ -2,16 +2,20 @@
+ 1:abc
2:def
---------------------------- Test N2 ------------------------------
+ 1:abc
def
+ 2:ghi
+-jkl---------------------------- Test N3 ------------------------------
++jkl
++---------------------------- Test N3 ------------------------------
+ 2:def
3:
+ ghi
+-jkl---------------------------- Test N4 ------------------------------
++jkl
---------------------------- Test N4 ------------------------------
+ 2:ghi
+-jkl---------------------------- Test N5 ------------------------------
++jkl
++---------------------------- Test N5 ------------------------------
+ 1:abc
2:def
+ 3:ghi
+-4:jkl---------------------------- Test N6 ------------------------------
++4:jkl
++---------------------------- Test N6 ------------------------------
+ 1:abc
2:def
+ 3:ghi
+-4:jkl---------------------------- Test N7 ------------------------------
+-1:abcZERO2:def
++4:jkl
++---------------------------- Test N7 ------------------------------
++1:abcZERO2:defZERO
+--
+2.21.1
+
diff --git a/pcre2.spec b/pcre2.spec
index 45eaca6..dd359aa 100644
--- a/pcre2.spec
+++ b/pcre2.spec
@@ -62,6 +62,9 @@ Patch2: pcre2-10.34-Fix-the-too-early-access-of-the-fields-of-a-compiled.pat
Patch3: pcre2-10.34-Fix-THEN-verbs-in-lookahead-assertions-in-JIT.patch
# Fix a memory leak when allocating a JIT stack fails, in upstream after 10.34
Patch4: pcre2-10.34-The-JIT-stack-should-be-freed-when-the-low-level-sta.patch
+# Ensure a newline after the final line in a file is output by pcre2grep,
+# upstream bug #2513, in upstream after 10.34
+Patch5: pcre2-10.34-Ensure-a-newline-after-the-final-line-in-a-file-is-o.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: coreutils
@@ -144,6 +147,7 @@ Utilities demonstrating PCRE2 capabilities like pcre2grep or pcre2test.
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%patch5 -p1
# Because of multilib patch
libtoolize --copy --force
autoreconf -vif
@@ -243,6 +247,8 @@ make %{?_smp_mflags} check VERBOSE=yes
%changelog
* Mon Jan 27 2020 Petr Pisar - 10.34-5
- Fix a memory leak when allocating a JIT stack fails
+- Ensure a newline after the final line in a file is output by pcre2grep
+ (upstream bug #2513)
* Mon Jan 13 2020 Petr Pisar - 10.34-4
- Fix a crash in JITted code when a *THEN verb is used in a lookahead assertion