Skip to content

Commit 6d1f4f0

Browse files
authored
Merge pull request #14879 from compnerd/windows-stubs
Windows stubs
2 parents 5c9ab18 + c6eed1f commit 6d1f4f0

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

stdlib/public/runtime/ReflectionMirror.mm

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,44 @@
3939
#include <objc/runtime.h>
4040
#endif
4141

42+
#if defined(_WIN32)
43+
#include <stdarg.h>
44+
45+
namespace {
46+
int asprintf(char **strp, const char *fmt, ...) {
47+
va_list argp0, argp1;
48+
49+
va_start(argp0, fmt);
50+
va_copy(argp1, argp0);
51+
52+
int length = _vscprintf(fmt, argp0);
53+
54+
*strp = reinterpret_cast<char *>(malloc(length + 1));
55+
if (*strp == nullptr)
56+
return -1;
57+
58+
length = _vsnprintf(*strp, length, fmt, argp1);
59+
60+
va_end(argp0);
61+
va_end(argp1);
62+
63+
return length;
64+
}
65+
66+
char *strndup(const char *s, size_t n) {
67+
size_t length = std::min(strlen(s), n);
68+
69+
char *buffer = reinterpret_cast<char *>(malloc(length + 1));
70+
if (buffer == nullptr)
71+
return buffer;
72+
73+
strncpy(buffer, s, length);
74+
buffer[length] = '\0';
75+
return buffer;
76+
}
77+
}
78+
#endif
79+
4280
using namespace swift;
4381

4482
#if SWIFT_OBJC_INTEROP

0 commit comments

Comments
 (0)