https://github.com/kastiglione created 
https://github.com/llvm/llvm-project/pull/139805

Fixes the calculation of the number of children for `std::forward_list` to no 
longer be
capped. The calculation was capped by the value of `target.max-children-count`.

This resulted in at least the following problems:

1. The summary formatter would display the incorrect size when the size was 
greater than
   `max-child-count`.
2. The elision marker (`...`) would not be shown when the number of elements 
was greater
   than `max-child-count`.


>From beeb0d9d29e098e4a7063541f657e4ec65db285d Mon Sep 17 00:00:00 2001
From: Dave Lee <davelee....@gmail.com>
Date: Tue, 13 May 2025 15:45:44 -0700
Subject: [PATCH] [lldb] Fix ForwardListFrontEnd::CalculateNumChildren

Fixes the calculation of the number of children for `std::forward_list` to no 
longer be
capped. The calculation was capped by the value of `target.max-children-count`.

This resulted in at least the following problems:

1. The summary formatter would display the incorrect size when the size was 
greater than
   `max-child-count`.
2. The elision marker (`...`) would not be shown when the number of elements 
was greater
   than `max-child-count`.
---
 lldb/source/Plugins/Language/CPlusPlus/LibCxxList.cpp |  2 +-
 .../TestDataFormatterGenericForwardList.py            | 11 ++++++-----
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxList.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/LibCxxList.cpp
index 30db5f15c388f..e3c200da6a0f5 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxList.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxList.cpp
@@ -251,7 +251,7 @@ llvm::Expected<uint32_t> 
ForwardListFrontEnd::CalculateNumChildren() {
 
   ListEntry current(m_head);
   m_count = 0;
-  while (current && m_count < m_list_capping_size) {
+  while (current) {
     ++m_count;
     current = current.next();
   }
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/forward_list/TestDataFormatterGenericForwardList.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/forward_list/TestDataFormatterGenericForwardList.py
index 185a24cf6dce3..1639d7275b407 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/forward_list/TestDataFormatterGenericForwardList.py
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/forward_list/TestDataFormatterGenericForwardList.py
@@ -53,13 +53,14 @@ def do_test(self, stdlib_type):
             substrs=["target.max-children-count (unsigned) = 256"],
         )
 
+        self.runCmd("settings set target.max-children-count 256", check=False)
         self.expect(
             "frame variable thousand_elts",
             matching=False,
-            substrs=["[256]", "[333]", "[444]", "[555]", "[666]", "..."],
+            substrs=["[256]", "[333]", "[444]", "[555]", "[666]"],
         )
-        self.runCmd("settings set target.max-children-count 3", check=False)
 
+        self.runCmd("settings set target.max-children-count 3", check=False)
         self.expect(
             "frame variable thousand_elts",
             matching=False,
@@ -73,7 +74,7 @@ def do_test(self, stdlib_type):
         self.expect(
             "frame variable thousand_elts",
             matching=True,
-            substrs=["size=256", "[0]", "[1]", "[2]", "..."],
+            substrs=["size=1000", "[0]", "[1]", "[2]", "..."],
         )
 
     def do_test_ptr_and_ref(self, stdlib_type):
@@ -138,7 +139,7 @@ def do_test_ptr_and_ref(self, stdlib_type):
             "frame variable ref",
             matching=True,
             substrs=[
-                "size=256",
+                "size=1000",
                 "[0] = 999",
                 "[1] = 998",
                 "[2] = 997",
@@ -149,7 +150,7 @@ def do_test_ptr_and_ref(self, stdlib_type):
             "frame variable *ptr",
             matching=True,
             substrs=[
-                "size=256",
+                "size=1000",
                 "[0] = 999",
                 "[1] = 998",
                 "[2] = 997",

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to