From 3917afa371cff7df1d755386e7bb0ae803e2f94c Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 4 Nov 2025 08:56:08 -0700 Subject: [PATCH] Reject negative children in DAP This changes DAP to ignore the case where a pretty-printer returns a negative number from the num_children method. It didn't seem worth writing a test case for this. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=33594 Reviewed-By: Ciaran Woodward --- gdb/python/lib/gdb/dap/varref.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gdb/python/lib/gdb/dap/varref.py b/gdb/python/lib/gdb/dap/varref.py index d18197b8450..f5ffe34f7f5 100644 --- a/gdb/python/lib/gdb/dap/varref.py +++ b/gdb/python/lib/gdb/dap/varref.py @@ -21,7 +21,7 @@ import gdb import gdb.printing from .server import client_bool_capability -from .startup import DAPException, in_gdb_thread +from .startup import DAPException, in_gdb_thread, log # A list of all the variable references created during this pause. all_variables = [] @@ -226,6 +226,11 @@ class VariableReference(BaseReference): num_children = self._printer.num_children() if num_children is None: num_children = len(self.cache_children()) + elif num_children < 0: + # It doesn't make sense to have a negative number of + # children. + log("pretty printer returned negative children") + num_children = 0 self.count = num_children return self.count -- 2.47.3