On Mon, 27 Jul 2026 at 18:14, <[email protected]> wrote:
>
> From: David Faure <[email protected]>
>
> StdMapPrinter.num_children and StdSetPrinter.num_children name their
> parameter 'slf' but refer to 'self' in the body, so any call raises
> "NameError: name 'self' is not defined".
>
> GDB does not call num_children for a plain 'print', which is why this
> went unnoticed, but printers that delegate to these ones do hit it.
> For instance KDevelop's QMap pretty-printer forwards to StdMapPrinter,
> and fails with the above error on every Qt 6 QMap since these methods
> were added in commit de124ffe1439.
>
> libstdc++-v3/ChangeLog
>
> * python/libstdcxx/v6/printers.py (StdMapPrinter.num_children):
> Fix parameter name.
> (StdSetPrinter.num_children): Likewise.
>
> Signed-off-by: David Faure <[email protected]>
Thanks, also pushed to trunk and I'll backport it to gcc-16.
> ---
> libstdc++-v3/python/libstdcxx/v6/printers.py | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py
> b/libstdc++-v3/python/libstdcxx/v6/printers.py
> index be7e7a2..eff4b72 100644
> --- a/libstdc++-v3/python/libstdcxx/v6/printers.py
> +++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
> @@ -908,7 +908,7 @@ class StdMapPrinter(printer_base):
> node = lookup_node_type('_Rb_tree_node', self._val.type).pointer()
> return self._iter(RbtreeIterator(self._val), node)
>
> - def num_children(slf):
> + def num_children(self):
> return len(RbtreeIterator(self._val))
>
> def display_hint(self):
> @@ -950,7 +950,7 @@ class StdSetPrinter(printer_base):
> node = lookup_node_type('_Rb_tree_node', self._val.type).pointer()
> return self._iter(RbtreeIterator(self._val), node)
>
> - def num_children(slf):
> + def num_children(self):
> return len(RbtreeIterator(self._val))
>
> class StdBitsetPrinter(printer_base):
> --
> 2.55.0
>