Re: [PATCH] newlib: Fix memory leak regarding gdtoa-based _ldtoa_r().

Takashi Yano <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
On Tue, 1 Aug 2023 14:35:54 +0200
Corinna Vinschen wrote:
> Hi Takashi,
> 
> On Aug  1 17:57, Takashi Yano wrote:
> > After the commit a4705d387f78, printf() for floating-point values
> > causes a memory leak. The legacy _ldtoa_r() assumed the char pointer
> > returned will be free'ed by Bfree(). However, gdtoa-based _ldtoa_r()
> > returns the pointer returned by gdtoa() which should be free'ed by
> > freedtoa(). Due to this issue, the caller of _ldtoa_r() fails to free
> > the allocated char buffer. This is the cause of the said memory leak.
> > https://cygwin.com/pipermail/cygwin/2023-July/254054.html
> > 
> > With this patch, a new buffer is allocated using Balloc() and the
> > buffer returned by gdtoa() is copied into it. Then, free the original
> > buffer using freedtoa().
> 
> Basically this is ok. But the question is this.  Isn't it possible
> to redefine the allocator in gdtoa so that it uses a Balloced buffer
> right away?  Forinstance, by using overloading macros?  That would
> allow to get away without having to copy stuff...

Thanks for the advice. I tried that. Please check v2 patch.

-- 
Takashi Yano <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.