AW: probably simple problem: ASSERT in Cyg_StdIostream

Manfred Wölfel manfred.woelfel@web.de
Wed Apr 26 05:05:00 GMT 2006


Because this are Stdio buffers constructed on startup we can abort, if 
memory allocation fails:

Index: packages/language/c/libc/stdio/current/include/streambuf.inl
===================================================================
RCS file: 
/cvs/ecos/ecos/packages/language/c/libc/stdio/current/include/streambuf.inl,v 

retrieving revision 1.6
diff -u -r1.6 streambuf.inl
--- packages/language/c/libc/stdio/current/include/streambuf.inl        
23 May 2002 23:07:16 -0000       1.6
+++ packages/language/c/libc/stdio/current/include/streambuf.inl        
25 Apr 2006 08:41:32 -0000
@@ -92,7 +92,8 @@
    // unnecessary, but it is to ensure a defined state if e.g. the malloc
    // in set_buffer() should fail

-    (void)set_buffer(size, new_buffer);
+       Cyg_ErrNo err = set_buffer(size, new_buffer);
+       CYG_ASSERT(err == ENOERR, "insufficient memory");
} // Cyg_StdioStreamBuffer constructor

Andrew Lunn wrote:
> On Tue, Apr 25, 2006 at 07:43:16AM +0200, Manfred W?lfel wrote:
>   
>> In the case of buffered IO,  the constructor of Cyg_StdioStream 
>> constructs a Cyg_StdioStreamBuffer object io_buf. The constructor of 
>> Cyg_StdioStreamBuffer calls Cyg_StdioStreamBuffer::set_buffer that may 
>> fail for lack of memory. The returned error is silently ignored in the 
>> constructor of Cyg_StdioStreamBuffer. In this case the constructor of 
>> Cyg_StdioStream gives up, before the magic value is set.
>>     
>
> So what are you suggesting? What is the fix? Could you provide a
> patch?
>
>    Thanks
>         Andrew
>   



More information about the Ecos-patches mailing list