feat(module): implement module initialization status check

* Add STK_MOD_INIT_SUCCESS and STK_MOD_INIT_FAILURE macros to stk.h.
* Update stk_module_load to validate module initialization before finalizing the load.
* Unload library if the init func fails, return error.
This commit is contained in:
2026-01-29 22:40:25 +01:00
parent 450f13fa62
commit 2fbf4ca24a
2 changed files with 10 additions and 5 deletions
+5
View File
@@ -4,11 +4,16 @@
#include "stk_version.h" #include "stk_version.h"
#include <stdlib.h> #include <stdlib.h>
/* Buffers */
#define STK_MOD_DIR_BUFFER 256 #define STK_MOD_DIR_BUFFER 256
#define STK_MOD_ID_BUFFER 64 #define STK_MOD_ID_BUFFER 64
#define STK_PATH_MAX 256 #define STK_PATH_MAX 256
#define STK_PATH_MAX_OS 4096 #define STK_PATH_MAX_OS 4096
/* Modules */
#define STK_MOD_INIT_SUCCESS 0
#define STK_MOD_INIT_FAILURE 1
#if defined(__linux__) || defined(_WIN32) #if defined(__linux__) || defined(_WIN32)
#define STK_EVENT_BUFFER 4096 #define STK_EVENT_BUFFER 4096
#endif #endif
+5 -5
View File
@@ -104,11 +104,13 @@ int stk_module_load(const char *path, int index)
return -2; return -2;
} }
if (index == -1)
index = module_count;
extract_module_id(path, module_id); extract_module_id(path, module_id);
if (init_func() != STK_MOD_INIT_SUCCESS) {
platform_unload_library(handle);
return -3;
}
strncpy(stk_module_ids[index], module_id, STK_MOD_ID_BUFFER - 1); strncpy(stk_module_ids[index], module_id, STK_MOD_ID_BUFFER - 1);
stk_module_ids[index][STK_MOD_ID_BUFFER - 1] = '\0'; stk_module_ids[index][STK_MOD_ID_BUFFER - 1] = '\0';
@@ -116,8 +118,6 @@ int stk_module_load(const char *path, int index)
stk_inits[index] = init_func; stk_inits[index] = init_func;
stk_shutdowns[index] = shutdown_func; stk_shutdowns[index] = shutdown_func;
init_func(); /* TODO eventually return an int for success */
return 0; return 0;
} }