# DP: Throw exception instead of aborting when out of memory From: inaky@peloncho.fis.ucm.es To: submit@bugs.debian.org Subject: Bug#42622: libstdc++2.10-dev: stl_alloc.h: malloc_alloc out of memory handling abort()s instead of using exceptions Date: Sat, 7 Aug 1999 04:31:58 +0200 Package: libstdc++2.10-dev Version: 1:2.95-2 Severity: important Hi 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: --- libstdc++/stl/stl_alloc.h~ Fri May 7 12:13:28 1999 +++ libstdc++/stl/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 +#ifdef __STL_USE_EXCEPTIONS # include # 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, -- System Information Debian Release: potato Kernel Version: Linux jovian 2.2.7 #1 mar ago 3 02:24:40 CEST 1999 i586 unknown Versions of the packages libstdc++2.10-dev depends on: ii g++ 2.95-2 The GNU C++ compiler. ii libc6-dev 2.1.2-0pre4 GNU C Library: Development libraries and hea ii libstdc++2.10 2.95-2 The GNU stdc++ library