Skip to content

Commit df55b33

Browse files
authored
Merge pull request #657 from hdijkema/log-fix
Fix bootstrap problem with logger function.
2 parents 05c75c8 + 265a3f5 commit df55b33

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

src/webui.c

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -444,8 +444,6 @@ typedef struct _webui_core_t {
444444
char* default_server_root_path;
445445
bool ui;
446446
char* custom_browser_folder_path;
447-
void (*logger_func)(size_t level, const char* log, void* user_data);
448-
void* logger_user_data;
449447
#ifdef WEBUI_TLS
450448
char* root_cert;
451449
char* root_key;
@@ -466,6 +464,11 @@ typedef struct _webui_core_t {
466464
}
467465
_webui_core_t;
468466

467+
typedef struct _webui_log_t {
468+
void (*logger_func)(size_t level, const char* log, void* user_data);
469+
void* logger_user_data;
470+
} _webui_log_t;
471+
469472
typedef struct _webui_recv_arg_t {
470473
_webui_window_t* win;
471474
void * ptr;
@@ -694,6 +697,7 @@ static WEBUI_THREAD_MONITOR;
694697

695698
// -- Heap ----------------------------
696699
static _webui_core_t _webui;
700+
static _webui_log_t _webui_log_data = { NULL, NULL };
697701
static const char* webui_html_served = "<html><head><title>Access Denied</title><script src=\"/webui.js\"></script><style>"
698702
"body{margin:0;background-repeat:no-repeat;background-attachment:fixed;background-color:#FF3CAC;background-image:linear-"
699703
"gradient(225deg,#FF3CAC 0%,#784BA0 45%,#2B86C5 100%);font-family:sans-serif;margin:20px;color:#fff}a{color:#fff}</style>"
@@ -710,7 +714,7 @@ static const char* webui_def_icon = "<svg xmlns=\"http://www.w3.org/2000/svg\" w
710714
// -- Logs ----------------------------
711715

712716
static void _webui_log(size_t level, const char *format, va_list args) {
713-
if (_webui.logger_func == NULL) {
717+
if (_webui_log_data.logger_func == NULL) {
714718
// Print log directly
715719
if (level == WEBUI_LOGGER_LEVEL_ERROR) {
716720
vfprintf(stderr, format, args);
@@ -724,16 +728,16 @@ static void _webui_log(size_t level, const char *format, va_list args) {
724728
int needed_size = vsnprintf(NULL, 0, format, args_copy);
725729
va_end(args_copy);
726730
if (needed_size < 0) {
727-
_webui.logger_func(WEBUI_LOGGER_LEVEL_ERROR, "Log formatting error", _webui.logger_user_data);
731+
_webui_log_data.logger_func(WEBUI_LOGGER_LEVEL_ERROR, "Log formatting error", _webui_log_data.logger_user_data);
728732
return;
729733
}
730734
char *buffer = _webui_malloc(needed_size + 1);
731735
if (buffer == NULL) {
732-
_webui.logger_func(WEBUI_LOGGER_LEVEL_ERROR, "Memory allocation failed for log", _webui.logger_user_data);
736+
_webui_log_data.logger_func(WEBUI_LOGGER_LEVEL_ERROR, "Memory allocation failed for log", _webui_log_data.logger_user_data);
733737
return;
734738
}
735739
vsnprintf(buffer, needed_size + 1, format, args);
736-
_webui.logger_func(level, buffer, _webui.logger_user_data);
740+
_webui_log_data.logger_func(level, buffer, _webui_log_data.logger_user_data);
737741
_webui_free_mem((void*)buffer);
738742
}
739743
}
@@ -742,23 +746,26 @@ static void _webui_log_debug(const char *format, ...) {
742746
va_list args;
743747
va_start(args, format);
744748
_webui_log(WEBUI_LOGGER_LEVEL_DEBUG, format, args);
749+
va_end(args);
745750
}
746751

747752
static void _webui_log_info(const char *format, ...) {
748753
va_list args;
749754
va_start(args, format);
750755
_webui_log(WEBUI_LOGGER_LEVEL_INFO, format, args);
756+
va_end(args);
751757
}
752758

753759
static void _webui_log_error(const char *format, ...) {
754760
va_list args;
755761
va_start(args, format);
756762
_webui_log(WEBUI_LOGGER_LEVEL_ERROR, format, args);
763+
va_end(args);
757764
}
758765

759766
void webui_set_logger(void (*func)(size_t level, const char* log, void* user_data), void *user_data) {
760-
_webui.logger_func = func;
761-
_webui.logger_user_data = user_data;
767+
_webui_log_data.logger_func = func;
768+
_webui_log_data.logger_user_data = user_data;
762769
}
763770

764771
// -- Functions -----------------------

0 commit comments

Comments
 (0)