From: Tom Tromey Date: Tue, 4 Nov 2025 15:56:08 +0000 (-0700) Subject: Reject negative children in DAP X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3917afa371cff7df1d755386e7bb0ae803e2f94c;p=thirdparty%2Fbinutils-gdb.git 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 --- 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