X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/94b8e4f0425cebad0a186daf054168fa6910f9b8..91dfab84182937b62ef64cb12d8e4f89e6d5c3ec:/lincan/src/finish.c diff --git a/lincan/src/finish.c b/lincan/src/finish.c index a5cd8d1..fdca959 100644 --- a/lincan/src/finish.c +++ b/lincan/src/finish.c @@ -9,8 +9,10 @@ void msgobj_done(struct msgobj_t *obj) { + int delayed=0; if(obj->qends) { - if(canqueue_ends_done_chip(obj->qends) < 0) + delayed=canqueue_ends_done_chip(obj->qends); + if(delayed < 0) CANMSG("msgobj_done: problem with chip queue ends\n"); } @@ -32,7 +34,11 @@ void msgobj_done(struct msgobj_t *obj) del_timer_sync(&obj->tx_timeout); if(obj->qends) { - can_checked_free(obj->qends); + /*delayed free could be required there in the future, + actual use patter cannot generate such situation*/ + if(!delayed) { + can_checked_free(obj->qends); + } } obj->qends=NULL; }