@@ -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+
469472typedef struct _webui_recv_arg_t {
470473 _webui_window_t * win ;
471474 void * ptr ;
@@ -694,6 +697,7 @@ static WEBUI_THREAD_MONITOR;
694697
695698// -- Heap ----------------------------
696699static _webui_core_t _webui ;
700+ static _webui_log_t _webui_log_data = { NULL , NULL };
697701static 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
712716static 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
747752static 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
753759static 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
759766void 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