]> granicus.if.org Git - esp-idf/commitdiff
Merge branch 'bugfix/newlib_fd_memory_leak' into 'master'
authorIvan Grokhotkov <ivan@espressif.com>
Tue, 20 Sep 2016 04:12:06 +0000 (12:12 +0800)
committerIvan Grokhotkov <ivan@espressif.com>
Tue, 20 Sep 2016 04:12:06 +0000 (12:12 +0800)
override per-task __cleanup handler to close stdin, stdout, stderr

Default _cleanup_r function (called from _reclaim_reent) calls _fclose_r for all file descriptors related to a particular instance of struct _reent.
It does that by calling _fwalk_reent, which iterates over __sglue list in struct _reent and calls _fclose_r for each member. But _stdin, _stdout, and _stderr are not in this list, so _fclose_r is not called for them. Which leads to a memory leak.
The easy way to fix this is to reset __cleanup member of struct _reent to our new “patched” version, which first calls the original version (_cleanup_r) and then does _fclose_r for each of the stdin, stdout, and stderr.

See merge request !94


Trivial merge