diff options
Diffstat (limited to 'src/utils.c')
| -rw-r--r-- | src/utils.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/utils.c b/src/utils.c index d512238..0b3513d 100644 --- a/src/utils.c +++ b/src/utils.c @@ -26,13 +26,18 @@ typedef struct _OVERLAPPED { #define SUCCEEDED(hr) (((i32)(hr)) >= 0) -#if _MSC_VER +#if defined(_MSC_VER) && !defined(__clang__) #define va_start(ap, x) ((void)(__va_start(&ap, x))) #define va_arg(ap, t) \ ((sizeof(t) > sizeof(__int64) || (sizeof(t) & (sizeof(t) - 1)) != 0) \ ? **(t**)((ap += sizeof(__int64)) - sizeof(__int64)) \ : *(t* )((ap += sizeof(__int64)) - sizeof(__int64))) #define va_end(ap) ((void)(ap = (va_list)0)) +#elif defined(__clang__) + #define va_list __builtin_va_list + #define va_start __builtin_va_start + #define va_arg __builtin_va_arg + #define va_end __builtin_va_end #endif #define STD_INPUT_HANDLE ((u32)-10) @@ -44,6 +49,7 @@ extern void* GetStdHandle(u32 nStdHandle); extern i32 WriteFile(void* hFile, const void* lpBuffer, u32 nNumberOfBytesToWrite, u32* lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); extern i32 ReadProcessMemory(void* hProcess, const void* lpBaseAddress, void* lpBuffer, size_t nSize, size_t* lpNumberOfBytesRead); + // ======================== // ====== !windows.h ====== // ======================== @@ -205,12 +211,12 @@ void print(const char* format, ...) { cur_char += length; } } else if(*cur_fmt == 'c') { - char c = va_arg(args, char); + i32 c = va_arg(args, i32); if (fill_count > 1U) { fill_chars((u8*)cur_char, ' ', (u32)fill_count - 1U); cur_char += fill_count; } - *cur_char = c; + *cur_char = (i8)c; cur_char++; } else if (*cur_fmt == 'x') { u64 number = va_arg(args, u64); |
