esp_event: always alloc data when not posting from isr

This commit is contained in:
Renz Christian Bagaporo
2019-05-20 19:31:45 +08:00
parent f21b8bbf55
commit 4042902402

View File

@@ -753,24 +753,17 @@ esp_err_t esp_event_post_to(esp_event_loop_handle_t event_loop, esp_event_base_t
memset((void*)(&post), 0, sizeof(post)); memset((void*)(&post), 0, sizeof(post));
if (event_data != NULL && event_data_size != 0) { if (event_data != NULL && event_data_size != 0) {
#if CONFIG_ESP_EVENT_POST_FROM_ISR // Make persistent copy of event data on heap.
if(event_data_size > sizeof(post.data.val)) { void* event_data_copy = calloc(1, event_data_size);
#endif
// Make persistent copy of event data on heap.
void* event_data_copy = calloc(1, event_data_size);
if (event_data_copy == NULL) { if (event_data_copy == NULL) {
return ESP_ERR_NO_MEM; return ESP_ERR_NO_MEM;
}
memcpy(event_data_copy, event_data, event_data_size);
#if CONFIG_ESP_EVENT_POST_FROM_ISR
post.data.ptr = event_data_copy;
post.data_allocated = true;
} else {
memcpy(&post.data.val, event_data, event_data_size);
post.data_allocated = false;
} }
memcpy(event_data_copy, event_data, event_data_size);
#if CONFIG_ESP_EVENT_POST_FROM_ISR
post.data.ptr = event_data_copy;
post.data_allocated = true;
post.data_set = true; post.data_set = true;
#else #else
post.data = event_data_copy; post.data = event_data_copy;