[Lldb-commits] [lldb] [LLDB-DAP] SBDebugger don't prefix title on progress updates (PR #124648)

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Fri Feb 7 13:29:40 PST 2025


================
@@ -427,14 +452,27 @@ void ProgressEventThreadFunction(DAP &dap) {
           done = true;
         }
       } else {
-        uint64_t progress_id = 0;
-        uint64_t completed = 0;
-        uint64_t total = 0;
-        bool is_debugger_specific = false;
-        const char *message = lldb::SBDebugger::GetProgressFromEvent(
-            event, progress_id, completed, total, is_debugger_specific);
-        if (message)
-          dap.SendProgressEvent(progress_id, message, completed, total);
+        lldb::SBStructuredData data =
+            lldb::SBDebugger::GetProgressDataFromEvent(event);
+
+        uint64_t progress_id = GetUintFromStructuredData(data, "progress_id");
+        uint64_t completed = GetUintFromStructuredData(data, "completed");
+        uint64_t total = GetUintFromStructuredData(data, "total");
+        std::string message;
+        // Include the title on the first event.
+        if (completed == 0) {
+          std::string title = GetStringFromStructuredData(data, "title");
+          message += title;
+          message += ": ";
+        }
+
+        std::string details = GetStringFromStructuredData(data, "details");
+        message += details;
+        // Verbose check, but we get -1 for the uint64 on failure to read
+        // so we check everything before broadcasting an event.
+        if (message.length() > 0 && progress_id > 0 && total >= 0 &&
+            completed >= 0)
----------------
JDevlieghere wrote:

`total` and `completed` are unsigned so isn't `total >= 0 && completed >= 0` always true?

https://github.com/llvm/llvm-project/pull/124648


More information about the lldb-commits mailing list