Fix a bug in DAP scopes code
authorTom Tromey <tromey@adacore.com>
Mon, 30 Oct 2023 16:23:35 +0000 (10:23 -0600)
committerTom Tromey <tromey@adacore.com>
Tue, 14 Nov 2023 15:44:31 +0000 (08:44 -0700)
While working on static links, I noticed that the DAP scopes code does
not handle the scenario where a frame decorator returns None.  This
situation should be handled identically to a frame decorator returning
an empty iterator.

gdb/python/lib/gdb/dap/scopes.py

index 87f2ed7547f9569386df678623c372473694e0a0..13c35817fb6771e6f7211d92e801ad19bb372e19 100644 (file)
@@ -107,10 +107,14 @@ def _get_scope(id):
     else:
         frame = frame_for_id(id)
         scopes = []
-        args = frame.frame_args()
+        # Make sure to handle the None case as well as the empty
+        # iterator case.
+        args = tuple(frame.frame_args() or ())
         if args:
             scopes.append(_ScopeReference("Arguments", "arguments", frame, args))
-        locs = frame.frame_locals()
+        # Make sure to handle the None case as well as the empty
+        # iterator case.
+        locs = tuple(frame.frame_locals() or ())
         if locs:
             scopes.append(_ScopeReference("Locals", "locals", frame, locs))
         scopes.append(_RegisterReference("Registers", frame))