X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/24dde2b186e49d6d597d5a02e2b5f51e2147ca6e..0789c67983b502e2b83f9a447e3f6b2d0eff2a54:/lincan/src/finish.c diff --git a/lincan/src/finish.c b/lincan/src/finish.c index 01d8b6b..5e789ae 100644 --- a/lincan/src/finish.c +++ b/lincan/src/finish.c @@ -14,7 +14,7 @@ #include "../include/finish.h" #include "../include/setup.h" - +extern int next_minor; /** * msgobj_done - destroys one CAN message object * @obj: pointer to CAN message object structure @@ -37,8 +37,11 @@ void msgobj_done(struct msgobj_t *obj) } if((obj->minor>=0)) { - if(objects_p[obj->minor] == obj) + if(objects_p[obj->minor] == obj){ objects_p[obj->minor] = NULL; + if (--next_minor<0) + next_minor=0; + } else CANMSG("msgobj_done: not registered as minor\n"); } @@ -66,8 +69,10 @@ void canchip_done(struct canchip_t *chip) int i; struct msgobj_t *obj; - if(chip->flags & CHIP_ATTACHED) + if(chip->flags & CHIP_ATTACHED){ chip->chipspecops->release_chip(chip); + chip->flags &= ~CHIP_ATTACHED; + } if((chip->hostdevice) && (chip->chip_idx>=0)) { if(chip->hostdevice->chip[chip->chip_idx] == chip)