@@ -2524,8 +2524,9 @@ const char* webui_get_string_at(webui_event_t* e, size_t index) {
25242524 _webui_log_info("[User] webui_get_string_at([%zu])\n", index);
25252525 #endif
25262526
2527- // Initialization
2528- _webui_init();
2527+ // Events only exist while WebUI is initialized
2528+ if (!_webui.initialized)
2529+ return NULL;
25292530
25302531 if (index > WEBUI_MAX_ARG)
25312532 return NULL;
@@ -2555,8 +2556,9 @@ size_t webui_get_count(webui_event_t* e) {
25552556 _webui_log_info("[User] webui_get_count()\n");
25562557 #endif
25572558
2558- // Initialization
2559- _webui_init();
2559+ // Events only exist while WebUI is initialized
2560+ if (!_webui.initialized)
2561+ return 0;
25602562
25612563 // Dereference
25622564 _webui_window_t* win = _webui_dereference_win_num(e->window);
@@ -2651,8 +2653,9 @@ size_t webui_get_size_at(webui_event_t* e, size_t index) {
26512653 _webui_log_info("[User] webui_get_size_at([%zu])\n", index);
26522654 #endif
26532655
2654- // Initialization
2655- _webui_init();
2656+ // Events only exist while WebUI is initialized
2657+ if (!_webui.initialized)
2658+ return 0;
26562659
26572660 if (index > WEBUI_MAX_ARG)
26582661 return 0;
@@ -2721,8 +2724,9 @@ void webui_return_int(webui_event_t* e, long long int n) {
27212724 _webui_log_info("[User] webui_return_int([%lld])\n", n);
27222725 #endif
27232726
2724- // Initialization
2725- _webui_init();
2727+ // Events only exist while WebUI is initialized
2728+ if (!_webui.initialized)
2729+ return;
27262730
27272731 // Dereference
27282732 _webui_window_t* win = _webui_dereference_win_num(e->window);
@@ -2744,8 +2748,9 @@ void webui_return_float(webui_event_t* e, double f) {
27442748 _webui_log_info("[User] webui_return_float([%f])\n", f);
27452749 #endif
27462750
2747- // Initialization
2748- _webui_init();
2751+ // Events only exist while WebUI is initialized
2752+ if (!_webui.initialized)
2753+ return;
27492754
27502755 // Dereference
27512756 _webui_window_t* win = _webui_dereference_win_num(e->window);
@@ -2767,21 +2772,21 @@ void webui_return_string(webui_event_t* e, const char* s) {
27672772 _webui_log_info("[User] webui_return_string([%s])\n", s);
27682773 #endif
27692774
2770- if (_webui_is_empty(s))
2775+ // Events only exist while WebUI is initialized
2776+ if (!_webui.initialized)
27712777 return;
27722778
2773- // Initialization
2774- _webui_init();
2775-
27762779 // Dereference
27772780 _webui_window_t* win = _webui_dereference_win_num(e->window);
27782781 if (win == NULL)
27792782 return;
27802783
27812784 // Copy Str
2785+ // An empty string is still a response, it completes an async call
27822786 size_t len = _webui_strlen(s);
27832787 char* buf = (char*)_webui_malloc(len);
2784- memcpy(buf, s, len);
2788+ if (len > 0)
2789+ memcpy(buf, s, len);
27852790
27862791 // Set response
27872792 _webui_event_set_response(win, e->event_number, buf);
@@ -2813,8 +2818,9 @@ void webui_return_bool(webui_event_t* e, bool b) {
28132818 _webui_log_info("[User] webui_return_bool([%d])\n", b);
28142819 #endif
28152820
2816- // Initialization
2817- _webui_init();
2821+ // Events only exist while WebUI is initialized
2822+ if (!_webui.initialized)
2823+ return;
28182824
28192825 // Dereference
28202826 _webui_window_t* win = _webui_dereference_win_num(e->window);
@@ -4795,8 +4801,9 @@ void webui_interface_set_response(size_t window, size_t event_number, const char
47954801 _webui_log_info("[User] webui_interface_set_response() -> Response [%s] \n", response);
47964802 #endif
47974803
4798- // Initialization
4799- _webui_init();
4804+ // Events only exist while WebUI is initialized
4805+ if (!_webui.initialized)
4806+ return;
48004807
48014808 // Dereference
48024809 _webui_window_t* win = _webui_dereference_win_num(window);
@@ -4806,7 +4813,8 @@ void webui_interface_set_response(size_t window, size_t event_number, const char
48064813 // Copy the response
48074814 size_t len = _webui_strlen(response);
48084815 char* buf = (char*)_webui_malloc(len);
4809- WEBUI_STR_COPY_DYN(buf, len, response);
4816+ if (len > 0)
4817+ WEBUI_STR_COPY_DYN(buf, len, response);
48104818
48114819 #ifdef WEBUI_LOG
48124820 _webui_log_info("[User] webui_interface_set_response() -> Internal buffer [%s] \n", buf);
@@ -5092,12 +5100,12 @@ void* webui_interface_get_context(size_t window, size_t event_number) {
50925100 if (win == NULL)
50935101 return NULL;
50945102
5095- // New Event (Wrapper)
5096- webui_event_t e ;
5097- e.window = window;
5098- e.event_number = event_number ;
5103+ // Get event inf
5104+ webui_event_inf_t* event_inf = _webui_get_event_inf(win, event_number) ;
5105+ if (event_inf == NULL)
5106+ return NULL ;
50995107
5100- return webui_get_context(&e );
5108+ return webui_get_context(&event_inf->event );
51015109}
51025110
51035111// -- Core's Functions ----------------
@@ -5217,13 +5225,7 @@ static void _webui_free_all_mem(void) {
52175225 _webui_log_debug("[Core]\t\t_webui_free_all_mem()\n");
52185226 #endif
52195227
5220- _webui_mutex_lock(&_webui.mutex_mem);
5221-
5222- // Makes sure we run this once
5223- static bool freed = false;
5224- if (freed)
5225- return;
5226- freed = true;
5228+ _webui_mutex_lock(&_webui.mutex_mem);
52275229
52285230 // Free all pointers in the list
52295231 void * ptr = NULL;
@@ -5284,6 +5286,7 @@ static void * _webui_malloc(size_t size) {
52845286
52855287 // Check
52865288 if (mem == NULL) {
5289+ _webui_mutex_unlock(&_webui.mutex_mem);
52875290 WEBUI_ASSERT("malloc() failed");
52885291 return NULL;
52895292 }
0 commit comments