summaryrefslogtreecommitdiffstats
path: root/src/utils.c
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2026-07-12 00:47:54 +0200
committerladevieq <ladevie.quentin@gmail.com>2026-07-12 00:47:54 +0200
commit7b6964eb1bcf30a0ae7ed3391adce30565b262b4 (patch)
tree3bbf89d582a1466a2319ccaaf6d4cbb734bdd66b /src/utils.c
parentce51256c91e566d339c6a670af11bab519f98349 (diff)
Load functions by hand
Diffstat (limited to 'src/utils.c')
-rw-r--r--src/utils.c12
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);