X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/04ac67cc3cac14cd601daacd0592121ec0b84012..50e9e47fc21191ea9ea758fea1e7f2bd5a275e98:/lincan/src/finish.c diff --git a/lincan/src/finish.c b/lincan/src/finish.c index be30f84..226c4e2 100644 --- a/lincan/src/finish.c +++ b/lincan/src/finish.c @@ -39,7 +39,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 @@ -62,8 +62,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"); } @@ -115,6 +118,10 @@ void canchip_done(struct canchip_t *chip) } can_checked_free(chip->chipspecops); + + if(~chip->flags & CHIP_KEEP_DATA) + can_checked_free(chip->chip_data); + chip->chip_data = NULL; chip->chipspecops=NULL; } @@ -155,7 +162,7 @@ void canhardware_done(struct canhardware_t *canhw) int i; struct candevice_t *candev; - for(i=0; inr_boards; i++){ + for(i=0; icandevice[i])==NULL) continue; candevice_done(candev);