This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: stl_alloc.h: malloc_alloc out of memory handling abort()s insteadof using exceptions


That is really weird -- I thought the standard specified that it should be
throwing bad_alloc.
					-Kip



On Sun, 8 Aug 1999, Matthias Klose wrote:

> [This bug/behaviour was reported to me as a co-maintainer of the
> Debian GNU/Linux GCC packages. Please Cc: 42622@bugs.debian.org in
> your response so it gets archived in the Debian bugtracking system
> (http://www.debian.org/Bugs/db/42/42622.html).]
> 
> 
>         While coding some proof-of-concepts I've come around using a
> vector<> of a big lot of elements. Wanted to push the limits and try
> to recover possible failures. No way. The program was aborting on the
> library's own. 
> 
>         That should not do. You want exceptions to be able to dictate
> how the program should behave on error situations. The thing is at
> stl_alloc.h, instead of throwing an exception on OOM, it was printing
> the message "out of memory" to stderr and aborting. It is also
> prepared for doing it via exceptions, so I think it should be the
> default way.
> 
>         I think that behaviour should be made extensible to the whole
> libstdc++ library, as as far as I know, exception support in GCC is
> mature enough as to handle it [and I hope so :)]. That's the only way
> to fully control a program's flow. Libraries should not dictate what
> to do on error [I'm sure I'm not telling you anything new].
> 
>         The changes to make stl_alloc work ok with exceptions are:
> 
> diff -uN /usr/include/g\+\+-3/stl_alloc.h\~ /usr/include/g\+\+-3/stl_alloc.h
> --- /usr/include/g++-3/stl_alloc.h~	Fri May  7 12:13:28 1999
> +++ /usr/include/g++-3/stl_alloc.h	Sat Aug  7 04:16:22 1999
> @@ -38,7 +38,7 @@
>  // The allocation primitives are intended to allocate individual objects,
>  // not larger arenas as with the original STL allocators.
>  
> -#if 0
> +#if 1
>  #   include <new>
>  #   define __THROW_BAD_ALLOC throw bad_alloc()
>  #elif !defined(__THROW_BAD_ALLOC)
> 
>         Thanks, anyway, for such nice packages for GCC & Co.
> 
>         Your happy Debian user,
> 
> 



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]