[ECOS] Termios memory leak?

Andrew Lunn andrew@lunn.ch
Thu Jul 21 18:02:00 GMT 2005


On Mon, Jul 18, 2005 at 09:29:25AM -0700, Jay Foster wrote:
> I ran into the same problem some time ago, and made the following change to
> correct it.  The bug would leak 8KB of memory each time cyg_io_lookup() was
> called for a termios device (after the first time).

Here is what i have committed. I removed the members from the priv
structure as well just to tidy things up.

        Andrew
-------------- next part --------------
? termiotty.diff
Index: ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/io/serial/current/ChangeLog,v
retrieving revision 1.63
diff -u -r1.63 ChangeLog
--- ChangeLog	28 Jun 2005 17:56:12 -0000	1.63
+++ ChangeLog	21 Jul 2005 18:00:33 -0000
@@ -1,3 +1,8 @@
+2005-07-21  Andrew Lunn  <andrew.lunn@ascom.ch>
+
+	* src/common/termiostty.c: Removed errbuf from priv. It was never
+	being used after being allocated and never freed.
+
 2005-06-27  Andrew Lunn <andrew.lunn@ascom.ch>
 
 	* src/common/serial.c (serial_select): Swap the DSR locks and
Index: src/common/termiostty.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/io/serial/current/src/common/termiostty.c,v
retrieving revision 1.6
diff -u -r1.6 termiostty.c
--- src/common/termiostty.c	5 Sep 2003 05:09:19 -0000	1.6
+++ src/common/termiostty.c	21 Jul 2005 18:00:34 -0000
@@ -107,9 +107,6 @@
     cyg_io_handle_t dev_handle;
     cyg_drv_mutex_t lock;
     cyg_bool        init;
-    cyg_uint8      *errbuf;
-    cyg_uint8      *errbufpos;
-    cyg_uint32      errbufsize;
 };
 
 typedef struct {
@@ -256,12 +253,6 @@
                                  &dev_buf_conf, &len );
     }
 
-    priv->errbuf = (cyg_uint8 *)malloc( dev_buf_conf.rx_bufsize );
-    if ( NULL == priv->errbuf )
-        res = ENOMEM;   // FIXME: Are we allowed to do this?
-    priv->errbufpos = priv->errbuf;
-    priv->errbufsize = dev_buf_conf.rx_bufsize;
-
     if ( ENOERR != res ) {
         CYG_REPORT_RETVAL( res );
         return res;

-------------- next part --------------
-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


More information about the Ecos-discuss mailing list