mirror of
https://github.com/raspberrypi/pico-sdk.git
synced 2026-01-28 01:47:21 +01:00
Fix issue with free rtos execute sync (#1979)
Stop handle_sync_func_call removing the worker. Depending on thread priority this can occur after the memory has gone out of scope in async_context_freertos_execute_sync. Fixes #1962
This commit is contained in:
parent
66c7f0f607
commit
91dfbd01e8
1 changed files with 1 additions and 1 deletions
|
|
@ -188,7 +188,6 @@ static void handle_sync_func_call(async_context_t *context, async_when_pending_w
|
|||
sync_func_call_t *call = (sync_func_call_t *)worker;
|
||||
call->rc = call->func(call->param);
|
||||
xSemaphoreGive(call->sem);
|
||||
async_context_remove_when_pending_worker(context, worker);
|
||||
}
|
||||
|
||||
uint32_t async_context_freertos_execute_sync(async_context_t *self_base, uint32_t (*func)(void *param), void *param) {
|
||||
|
|
@ -202,6 +201,7 @@ uint32_t async_context_freertos_execute_sync(async_context_t *self_base, uint32_
|
|||
async_context_add_when_pending_worker(self_base, &call.worker);
|
||||
async_context_set_work_pending(self_base, &call.worker);
|
||||
xSemaphoreTake(call.sem, portMAX_DELAY);
|
||||
async_context_remove_when_pending_worker(self_base, &call.worker);
|
||||
vSemaphoreDelete(call.sem);
|
||||
return call.rc;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue