From: David Schleef Date: Tue, 23 Jan 2001 18:23:20 +0000 (+0000) Subject: memleak fix from someone X-Git-Tag: r0_7_15~28 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=9d33f2d87518c6a3087b0afb6c085b333a976a96;p=comedilib.git memleak fix from someone --- diff --git a/lib/comedi.c b/lib/comedi.c index 338be62..a2fdcda 100644 --- a/lib/comedi.c +++ b/lib/comedi.c @@ -89,11 +89,34 @@ __asm__(".symver comedi_open_0,comedi_open@"); void comedi_close(comedi_t *it) { - it->magic=0; + subdevice *s; + int i; - /* XXX should free all memory */ + it->magic=0; + for(i=0;in_subdevices;i++){ + s=it->subdevices+i; + if(s->type==COMEDI_SUBD_UNUSED) + continue; + + if(s->subd_flags&SDF_FLAGS){ + free(s->flags_list); + } + if(s->subd_flags&SDF_MAXDATA){ + free(s->maxdata_list); + } + if(s->subd_flags&SDF_RANGETYPE){ + free(s->range_type_list); + free(s->rangeinfo_list); + }else{ + free(s->rangeinfo); + } + } + if(it->subdevices){ + free(it->subdevices); + } close(it->fd); + free(it); } int comedi_cancel(comedi_t *it,unsigned int subdevice)