[binutils-gdb] gdb: do not handle a NULL linebuffer in pager_file::puts

Simon Marchi simark@sourceware.org
Wed Mar 5 17:19:26 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=6594ca4a99dabbebd70c0748dee61d8b3a373336

commit 6594ca4a99dabbebd70c0748dee61d8b3a373336
Author: Simon Marchi <simon.marchi@polymtl.ca>
Date:   Wed Mar 5 11:28:15 2025 -0500

    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>

Diff:
---
 gdb/utils.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/gdb/utils.c b/gdb/utils.c
index 4027d4f26c3..9842bfc8be0 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -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


More information about the Gdb-cvs mailing list