Skip to content

Commit e02e156

Browse files
committed
fix
1 parent 3069294 commit e02e156

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

stdlib/public/core/KeyPath.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3712,7 +3712,7 @@ internal func _instantiateKeyPathBuffer(
37123712
}
37133713

37143714
@_silgen_name("swift_keypath_dladdr")
3715-
internal func keypath_dladdr(_: UnsafeRawPointer) -> UnsafePointer<CChar>
3715+
internal func keypath_dladdr(_: UnsafeRawPointer) -> UnsafePointer<CChar>?
37163716

37173717
@_silgen_name("swift_keypathSourceString")
37183718
internal func demangle(
@@ -3727,8 +3727,8 @@ fileprivate func dynamicLibraryAddress<Base, Leaf>(
37273727
) -> String {
37283728
let getter: ComputedAccessorsPtr.Getter<Base, Leaf> = pointer.getter()
37293729
let pointer = unsafeBitCast(getter, to: UnsafeRawPointer.self)
3730-
let cString = keypath_dladdr(UnsafeRawPointer(pointer))
3731-
if let demangled = demangle(name: cString) {
3730+
if let cString = keypath_dladdr(UnsafeRawPointer(pointer)),
3731+
let demangled = demangle(name: cString) {
37323732
return String(cString: demangled)
37333733
} else {
37343734
return "<computed \(pointer)>"

stdlib/public/runtime/ReflectionMirror.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,9 +1142,13 @@ const char *swift_keypath_dladdr(void *address) {
11421142

11431143
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_API
11441144
const char *swift_keypathSourceString(char *name) {
1145-
auto length = strlen(name);
1146-
auto mangledName = keypathSourceString(name, length);
1147-
char *rtnValue = new char[mangledName.length() + 1];
1148-
strcpy(rtnValue, mangledName.c_str());
1149-
return rtnValue;
1145+
size_t length = strlen(name);
1146+
std::string mangledName = keypathSourceString(name, length);
1147+
if (mangledName == "") {
1148+
return 0;
1149+
} else {
1150+
char *rtnValue = new char[mangledName.length() + 1];
1151+
strcpy(rtnValue, mangledName.c_str());
1152+
return rtnValue;
1153+
}
11501154
}

0 commit comments

Comments
 (0)