On 04/03/2026 18:14, Collin Funk wrote:
Pádraig Brady <[email protected]> writes:
On signed char platforms, 0xFF was converted to -1
which matches MBBUF_EOF, causing fold to stop processing.
* NEWS: Mention the bug fix.
* gl/lib/mbbuf.h: Avoid sign extension on signed char platforms.
* tests/fold/fold-characters.sh: Adjust test case.
Reported at https://src.fedoraproject.org/rpms/coreutils/pull-request/20
---
NEWS | 3 +++
gl/lib/mbbuf.h | 2 +-
tests/fold/fold-characters.sh | 9 +++++----
3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/NEWS b/NEWS
index 7eb70b6d1..340115ecc 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,9 @@ GNU coreutils NEWS -*-
outline -*-
** Bug fixes
+ 'fold' will no longer truncate output when encountering 0xFF bytes.
+ [bug introduced in coreutils-9.8]
+
'kill --help' now has links to valid anchors in the html manual.
[bug introduced in coreutils-9.10]
diff --git a/gl/lib/mbbuf.h b/gl/lib/mbbuf.h
index 9054fc92e..ea4b7e708 100644
--- a/gl/lib/mbbuf.h
+++ b/gl/lib/mbbuf.h
@@ -96,7 +96,7 @@ mbbuf_get_char (mbbuf_t *mbbuf)
else
{
/* Assume the program will emit the byte, but keep the error flag. */
- g.ch = mbbuf->buffer[mbbuf->offset++];
+ g.ch = (unsigned char) mbbuf->buffer[mbbuf->offset++];
Oops, my bad.
Couldn't we make the buffer member 'unsigned char *' and avoid the cast?
I think that would be a bit cleaner.
But then we start clashing with the signed mcel interface.
BTW (since you know more about gnulib tool than I),
do you know why lib/mbbuf.[ch] are copies rather than symlinks.
lib/fadvise.[ch] are symlinks for example, thus inducing rebuilds
when the sources in gl/lib are edited.
cheers,
Padraig
Collin