]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Reject negative children in DAP
authorTom Tromey <tromey@adacore.com>
Tue, 4 Nov 2025 15:56:08 +0000 (08:56 -0700)
committerTom Tromey <tromey@adacore.com>
Fri, 14 Nov 2025 19:27:20 +0000 (12:27 -0700)
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 <ciaranwoodward@xmos.com>
gdb/python/lib/gdb/dap/varref.py

index d18197b8450151d7b0bc69e6a90c984cd0ae513a..f5ffe34f7f55606805a9df09b803e5f957e2e8a8 100644 (file)
@@ -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