Skip to content

Commit dc7d838

Browse files
committed
[Runtime] Accept nil in swift_getObjCClassFromMetadata.
Somehow, clang was generating code that accepted nil and returned nil in swift_getObjCClassFromMetadata, but is no longer doing so. Some code relies on this to work, so switch to dyn_cast_or_null to accept nil explicitly. rdar://74895271
1 parent 8eaa034 commit dc7d838

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

stdlib/public/runtime/Metadata.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,13 +1028,13 @@ swift::swift_getObjCClassMetadata(const ClassMetadata *theClass) {
10281028
const ClassMetadata *
10291029
swift::swift_getObjCClassFromMetadata(const Metadata *theMetadata) {
10301030
// Unwrap ObjC class wrappers.
1031-
if (auto wrapper = dyn_cast<ObjCClassWrapperMetadata>(theMetadata)) {
1031+
if (auto wrapper = dyn_cast_or_null<ObjCClassWrapperMetadata>(theMetadata)) {
10321032
return wrapper->Class;
10331033
}
10341034

10351035
// Otherwise, the input should already be a Swift class object.
10361036
auto theClass = cast<ClassMetadata>(theMetadata);
1037-
assert(theClass->isTypeMetadata());
1037+
assert(!theClass || theClass->isTypeMetadata());
10381038
return theClass;
10391039
}
10401040

0 commit comments

Comments
 (0)