From 44bd1e97a0badab08f1a3ee159b8cf66b108976f Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Fri, 6 Jun 2025 14:11:55 -0700 Subject: [PATCH] [lldb] Add a missing check for an empty array rdar://152611562 --- .../Swift/SwiftLanguageRuntimeDynamicTypeResolution.cpp | 2 ++ .../notification/TestSwiftFoundationTypeNotification.py | 4 ++++ .../lang/swift/foundation_value_types/notification/main.swift | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lldb/source/Plugins/LanguageRuntime/Swift/SwiftLanguageRuntimeDynamicTypeResolution.cpp b/lldb/source/Plugins/LanguageRuntime/Swift/SwiftLanguageRuntimeDynamicTypeResolution.cpp index 8d8297afbbed0..059f26ed06809 100644 --- a/lldb/source/Plugins/LanguageRuntime/Swift/SwiftLanguageRuntimeDynamicTypeResolution.cpp +++ b/lldb/source/Plugins/LanguageRuntime/Swift/SwiftLanguageRuntimeDynamicTypeResolution.cpp @@ -1456,6 +1456,8 @@ SwiftRuntimeTypeVisitor::VisitImpl(std::optional visit_only, ++i; } } + if (supers.empty()) + return llvm::createStringError("could not get instance type info"); // Handle the "real" fields. auto *object = supers[0].get_record_type_info(); diff --git a/lldb/test/API/lang/swift/foundation_value_types/notification/TestSwiftFoundationTypeNotification.py b/lldb/test/API/lang/swift/foundation_value_types/notification/TestSwiftFoundationTypeNotification.py index a83b11842d458..a9706e050af48 100644 --- a/lldb/test/API/lang/swift/foundation_value_types/notification/TestSwiftFoundationTypeNotification.py +++ b/lldb/test/API/lang/swift/foundation_value_types/notification/TestSwiftFoundationTypeNotification.py @@ -32,3 +32,7 @@ def test(self): substrs=['name = ', '"MyNotification"', 'object = nil', 'userInfo = 0 key/value pairs']) + name = self.frame().FindVariable("name") + # This is a "don't crash" test. + child = name.GetChildAtIndex(0) + self.assertEquals(name.GetSummary(), '"MyNotification"') diff --git a/lldb/test/API/lang/swift/foundation_value_types/notification/main.swift b/lldb/test/API/lang/swift/foundation_value_types/notification/main.swift index 2012130cb133c..166fa8a9a8e3c 100644 --- a/lldb/test/API/lang/swift/foundation_value_types/notification/main.swift +++ b/lldb/test/API/lang/swift/foundation_value_types/notification/main.swift @@ -1,7 +1,8 @@ import Foundation func main() { - var notification = Notification(name: Notification.Name(rawValue: "MyNotification"), object: nil, userInfo: [:]) + var name = Notification.Name(rawValue: "MyNotification") + var notification = Notification(name: name, object: nil, userInfo: [:]) print("break here!") }