From 69b4907ff243846816193140d937cd930dd005ce Mon Sep 17 00:00:00 2001 From: anth64 Date: Sat, 31 Jan 2026 19:03:19 +0100 Subject: [PATCH] fix: resolve Windows segfaults by using platform-specific path separators On Windows, module IDs were failing to load because paths were being constructed with hardcoded forward slashes. Oops... - Added platform.h to centralize path separator macros. - Updated build_path in stk.c to use STK_PATH_SEP_STR instead of "/". - Cleaned up redundant platform logic in module.c. --- include/platform.h | 12 ++++++++++++ src/module.c | 7 +------ src/stk.c | 3 ++- 3 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 include/platform.h diff --git a/include/platform.h b/include/platform.h new file mode 100644 index 0000000..4e1969b --- /dev/null +++ b/include/platform.h @@ -0,0 +1,12 @@ +#ifndef STK_PLATFORM_H +#define STK_PLATFORM_H + +#ifdef _WIN32 +#define STK_PATH_SEP '\\' +#define STK_PATH_SEP_STR "\\" +#else +#define STK_PATH_SEP '/' +#define STK_PATH_SEP_STR "/" +#endif + +#endif /* STK_PLATFORM_H */ diff --git a/src/module.c b/src/module.c index 7c6bab3..1d6f964 100644 --- a/src/module.c +++ b/src/module.c @@ -1,3 +1,4 @@ +#include "platform.h" #include "stk.h" #include #include @@ -5,12 +6,6 @@ #define STK_MOD_FUNC_NAME_BUFFER 64 -#ifdef _WIN32 -#define STK_PATH_SEP '\\' -#else -#define STK_PATH_SEP '/' -#endif - typedef int (*stk_init_mod_func)(void); typedef void (*stk_shutdown_mod_func)(void); diff --git a/src/stk.c b/src/stk.c index 15a8f58..50bb3f1 100644 --- a/src/stk.c +++ b/src/stk.c @@ -1,4 +1,5 @@ #include "stk.h" +#include "platform.h" #include "stk_log.h" #include #include @@ -49,7 +50,7 @@ static void build_path(char *dest, size_t dest_size, const char *dir, { dest[0] = '\0'; strncat(dest, dir, dest_size - 1); - strncat(dest, "/", dest_size - strlen(dest) - 1); + strncat(dest, STK_PATH_SEP_STR, dest_size - strlen(dest) - 1); strncat(dest, file, dest_size - strlen(dest) - 1); }