From: Michal Rokos Date: 2002-09-02T20:49:14+09:00 Subject: Re: [MemLeak] in dln.c Hello, On Sat, Aug 31, 2002 at 09:01:00AM +0900, nobu.nokada@softhome.net wrote: > Hi, > > At Fri, 30 Aug 2002 23:38:27 +0900, > Michal Rokos wrote: > > if ((init_fct = (void(*)())GetProcAddress(handle, buf)) == NULL) { > > - rb_loaderror("%s - %s\n%s", dln_strerror(), buf, file); > > + rb_loaderror("%s - %s\n%s", dln_strerror(), buf, file); /* FIXME: MEMLEAK for buf */ > > } > > free(buf); > > This looks tiresome. > > Which do you prefer? > Well, personally, I'd add (before line with /* FIXME: Mem leak... */ this: > > if ((init_fct = (void(*)())GetProcAddress(handle, buf)) == NULL) { Data_Wrap_Struct(rb_cData, 0, free, buf); > > + rb_loaderror("%s - %s\n%s", dln_strerror(), buf, file); /* FIXME: MEMLEAK for buf */ > > } > > free(buf); (and on the 2nd place as well.) I know, that it has a flaw in it, but it could be OK. > (3) make init_funcname() to return VALUE and caller to hold it, > and remove all free(buf) lines. I used part of your #3, thanks. Any ideas? Michal -- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Michal Rokos Czech Technical University, Prague E-mail:m.rokos@sh.cvut.cz ICQ:36118339 Jabber:majkl@jabber.cz -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-