gdb: do not handle a NULL linebuffer in pager_file::puts

This patch [1] has shown that different implementations of ui_file::puts
handle a NULL line differently.  pager_file::puts handles a NULL
argument gracefully, as a no-op, while other implementations don't and
likely crash.  This causes subtle bugs: things will be working until the
current ui_file is suddenly not a pager_file anymore.  I think it would
be better to be consistent here, so change pager_file::puts to not
accept a NULL line.

A regular test run on Linux shows no regression.

[1] https://inbox.sourceware.org/gdb-patches/edfe6e17-1c20-4a4c-944f-247ff71b6c10@simark.ca/T/#m864aea10de8ca6fa84757971fcbaf3180e2eaefa

Change-Id: Ieb465c86cd2c42a248cf481cd174c8622ef6724b
Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
Simon Marchi 2025-03-05 11:28:15 -05:00 committed by Simon Marchi
parent 6a739b5551
commit 6594ca4a99

View file

@ -1638,8 +1638,7 @@ pager_file::puts (const char *linebuffer)
{
const char *lineptr;
if (linebuffer == 0)
return;
gdb_assert (linebuffer != nullptr);
/* Don't do any filtering or wrapping if both are disabled. */
if (batch_flag