diff --git a/porting/nimble/src/nimble_port.c b/porting/nimble/src/nimble_port.c index ec05897c1..e98732fbf 100644 --- a/porting/nimble/src/nimble_port.c +++ b/porting/nimble/src/nimble_port.c @@ -252,11 +252,12 @@ IRAM_ATTR nimble_port_run(void) while (1) { ev = ble_npl_eventq_get(&g_eventq_dflt, BLE_NPL_TIME_FOREVER); - ble_npl_event_run(ev); - if (ev == &ble_hs_ev_stop) { - break; + if (ev) { + ble_npl_event_run(ev); + if (ev == &ble_hs_ev_stop) { + break; + } } - } } diff --git a/porting/npl/freertos/src/npl_os_freertos.c b/porting/npl/freertos/src/npl_os_freertos.c index 4c60ccef2..124777f2b 100644 --- a/porting/npl/freertos/src/npl_os_freertos.c +++ b/porting/npl/freertos/src/npl_os_freertos.c @@ -447,7 +447,9 @@ void IRAM_ATTR npl_freertos_event_run(struct ble_npl_event *ev) { struct ble_npl_event_freertos *event = (struct ble_npl_event_freertos *)ev->event; - event->fn(ev); + if (event) { + event->fn(ev); + } } bool @@ -461,21 +463,29 @@ bool IRAM_ATTR npl_freertos_event_is_queued(struct ble_npl_event *ev) { struct ble_npl_event_freertos *event = (struct ble_npl_event_freertos *)ev->event; - return event->queued; + if (event) { + return event->queued; + } + return false; } void * IRAM_ATTR npl_freertos_event_get_arg(struct ble_npl_event *ev) { struct ble_npl_event_freertos *event = (struct ble_npl_event_freertos *)ev->event; - return event->arg; + if (event) { + return event->arg; + } + return NULL; } void IRAM_ATTR npl_freertos_event_set_arg(struct ble_npl_event *ev, void *arg) { struct ble_npl_event_freertos *event = (struct ble_npl_event_freertos *)ev->event; - event->arg = arg; + if (event) { + event->arg = arg; + } }