Skip to content

Commit ac90ec7

Browse files
committed
Fix bad optional access in sbprogress
1 parent f6703a4 commit ac90ec7

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

lldb/source/API/SBProgress.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,10 @@ SBProgress::~SBProgress() = default;
4040
void SBProgress::Increment(uint64_t amount, const char *description) {
4141
LLDB_INSTRUMENT_VA(amount, description);
4242

43-
m_opaque_up->Increment(amount, description);
43+
std::optional<std::string> description_opt;
44+
if (description && description[0])
45+
description_opt = description;
46+
m_opaque_up->Increment(amount, description_opt);
4447
}
4548

4649
lldb_private::Progress &SBProgress::ref() const { return *m_opaque_up; }

lldb/test/API/python_api/sbprogress/TestSBProgress.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,15 @@ def test_without_external_bit_set(self):
3333
expected_string = "Test progress first increment"
3434
progress.Increment(1, expected_string)
3535
self.assertFalse(listener.PeekAtNextEvent(event))
36+
37+
def test_with_external_bit_set(self):
38+
"""Test SBProgress can handle null events."""
39+
40+
progress = lldb.SBProgress("Test SBProgress", "Test progress", self.dbg)
41+
listener = lldb.SBListener("Test listener")
42+
broadcaster = self.dbg.GetBroadcaster()
43+
broadcaster.AddListener(listener, lldb.eBroadcastBitExternalProgress)
44+
event = lldb.SBEvent()
45+
46+
progress.Increment(1, None)
47+
self.assertTrue(listener.PeekAtNextEvent(event))

0 commit comments

Comments
 (0)