@@ -442,12 +442,19 @@ swift_reflection_copyNameForTypeRef(SwiftReflectionContextRef ContextRef,
442442 if (mangled) {
443443 auto Mangling = mangleNode (TR->getDemangling (Dem), Mangle::ManglingFlavor::Default);
444444 if (Mangling.isSuccess ()) {
445+ #if defined(_WIN32)
446+ return _strdup (Mangling.result ().c_str ());
447+ #else
445448 return strdup (Mangling.result ().c_str ());
449+ #endif
446450 }
447- }
448- else {
451+ } else {
449452 auto Name = nodeToString (TR->getDemangling (Dem));
453+ #if defined(_WIN32)
454+ return _strdup (Name.c_str ());
455+ #else
450456 return strdup (Name.c_str ());
457+ #endif
451458 }
452459 return nullptr ;
453460}
@@ -462,7 +469,11 @@ swift_reflection_copyDemangledNameForProtocolDescriptor(
462469 auto Demangling = Context->readDemanglingForContextDescriptor (
463470 RemoteAddress (Proto, RemoteAddress::DefaultAddressSpace), Dem);
464471 auto Name = nodeToString (Demangling);
472+ #if defined(_WIN32)
473+ return _strdup (Name.c_str ());
474+ #else
465475 return strdup (Name.c_str ());
476+ #endif
466477 });
467478}
468479
@@ -845,7 +856,13 @@ size_t swift_reflection_demangle(const char *MangledName, size_t Length,
845856
846857 std::string Mangled (MangledName, Length);
847858 auto Demangled = Demangle::demangleTypeAsString (Mangled);
859+ #if defined(_WIN32)
860+ errno_t err = strncpy_s (OutDemangledName, MaxLength,
861+ Demangled.c_str (), _TRUNCATE);
862+ static_cast <void >(err);
863+ #else
848864 strncpy (OutDemangledName, Demangled.c_str (), MaxLength);
865+ #endif
849866 return Demangled.size ();
850867}
851868
0 commit comments