diff options
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/src/pjsip-simple/evsub.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/pjsip/src/pjsip-simple/evsub.c b/pjsip/src/pjsip-simple/evsub.c index c83786d0..c55d3b47 100644 --- a/pjsip/src/pjsip-simple/evsub.c +++ b/pjsip/src/pjsip-simple/evsub.c @@ -557,6 +557,7 @@ static void set_state( pjsip_evsub *sub, pjsip_evsub_state state, { pjsip_evsub_state prev_state = sub->state; pj_str_t old_state_str = sub->state_str; + pjsip_event dummy_event; sub->state = state; @@ -575,6 +576,12 @@ static void set_state( pjsip_evsub *sub, pjsip_evsub_state state, (int)sub->state_str.slen, sub->state_str.ptr)); + /* don't call the callback with NULL event, it may crash the app! */ + if (!event) { + PJSIP_EVENT_INIT_USER(dummy_event, 0, 0, 0, 0); + event = &dummy_event; + } + if (sub->user.on_evsub_state && sub->call_cb) (*sub->user.on_evsub_state)(sub, event); |