diff --git a/components/uic_contiki/core/sys/process.c b/components/uic_contiki/core/sys/process.c index 9b32962d8f..3ecf0505b4 100644 --- a/components/uic_contiki/core/sys/process.c +++ b/components/uic_contiki/core/sys/process.c @@ -313,6 +313,7 @@ static void do_event(void) CC_REENTRANT_ARG data = events[fevent].data; receiver = events[fevent].p; + int fevent_copy = fevent; /* To be cleared once processed */ /* Since we have seen the new event, we move pointer upwards and decrese the number of events. */ @@ -342,6 +343,9 @@ static void do_event(void) CC_REENTRANT_ARG /* Make sure that the process actually is running. */ call_process(receiver, ev, data); } + /* Clear pointer (to potentially unreachable/freed data) */ + events[fevent_copy].data = NULL; + events[fevent_copy].p = NULL; } } /*---------------------------------------------------------------------------*/