@@ -442,12 +442,19 @@ swift_reflection_copyNameForTypeRef(SwiftReflectionContextRef ContextRef,
442
442
if (mangled) {
443
443
auto Mangling = mangleNode (TR->getDemangling (Dem), Mangle::ManglingFlavor::Default);
444
444
if (Mangling.isSuccess ()) {
445
+ #if defined(_WIN32)
446
+ return _strdup (Mangling.result ().c_str ());
447
+ #else
445
448
return strdup (Mangling.result ().c_str ());
449
+ #endif
446
450
}
447
- }
448
- else {
451
+ } else {
449
452
auto Name = nodeToString (TR->getDemangling (Dem));
453
+ #if defined(_WIN32)
454
+ return _strdup (Name.c_str ());
455
+ #else
450
456
return strdup (Name.c_str ());
457
+ #endif
451
458
}
452
459
return nullptr ;
453
460
}
@@ -462,7 +469,11 @@ swift_reflection_copyDemangledNameForProtocolDescriptor(
462
469
auto Demangling = Context->readDemanglingForContextDescriptor (
463
470
RemoteAddress (Proto, RemoteAddress::DefaultAddressSpace), Dem);
464
471
auto Name = nodeToString (Demangling);
472
+ #if defined(_WIN32)
473
+ return _strdup (Name.c_str ());
474
+ #else
465
475
return strdup (Name.c_str ());
476
+ #endif
466
477
});
467
478
}
468
479
@@ -845,7 +856,13 @@ size_t swift_reflection_demangle(const char *MangledName, size_t Length,
845
856
846
857
std::string Mangled (MangledName, Length);
847
858
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
848
864
strncpy (OutDemangledName, Demangled.c_str (), MaxLength);
865
+ #endif
849
866
return Demangled.size ();
850
867
}
851
868
0 commit comments