Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/newlib
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2013-06-24 15:34:03 +0400
committerCorinna Vinschen <corinna@vinschen.de>2013-06-24 15:34:03 +0400
commit837a83bf1c0ea8315825b903075ba279997e5e8c (patch)
tree3d9e380a9441a14ae0b3422d8df27eeadf14005f /newlib
parent99943e12c851ac566448525b5aaa5c9098041b31 (diff)
* libc/reent/reent.c (_reclaim_reent): Free also _misc and
_signal_buf.
Diffstat (limited to 'newlib')
-rw-r--r--newlib/ChangeLog5
-rw-r--r--newlib/libc/reent/reent.c9
2 files changed, 14 insertions, 0 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 461076ff6..a57bcd7ef 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,5 +1,10 @@
2013-06-24 Terraneo Federico <fede.tft@hotmail.it>
+ * libc/reent/reent.c (_reclaim_reent): Free also _misc and
+ _signal_buf.
+
+2013-06-24 Terraneo Federico <fede.tft@hotmail.it>
+
* libc/include/sys/reent.h (_ATEXIT_INIT_PTR): Remove.
(_REENT_INIT_ATEXIT_PTR): Remove.
(_REENT_INIT_PTR): Reduce code size if _REENT_SMALL.
diff --git a/newlib/libc/reent/reent.c b/newlib/libc/reent/reent.c
index 9f5a8c0d3..b6c2abf02 100644
--- a/newlib/libc/reent/reent.c
+++ b/newlib/libc/reent/reent.c
@@ -87,6 +87,10 @@ _DEFUN (_reclaim_reent, (ptr),
_free_r (ptr, ptr->_localtime_buf);
if (ptr->_asctime_buf)
_free_r (ptr, ptr->_asctime_buf);
+ if (ptr->_signal_buf)
+ _free_r (ptr, ptr->_signal_buf);
+ if (ptr->_misc)
+ _free_r (ptr, ptr->_misc);
#endif
#ifndef _REENT_GLOBAL_ATEXIT
@@ -110,6 +114,11 @@ _DEFUN (_reclaim_reent, (ptr),
if (ptr->_cvtbuf)
_free_r (ptr, ptr->_cvtbuf);
+ /* We should free _sig_func to avoid a memory leak, but how to
+ do it safely considering that a signal may be delivered immediately
+ after the free?
+ if (ptr->_sig_func)
+ _free_r (ptr, ptr->_sig_func);*/
if (ptr->__sdidinit)
{