
On 9/30/07, Emil Dotchevski <emil@revergestudios.com> wrote:
try { try { ... } catch (std::bad_alloc & e) { throw boost::exception() << error_info<tag::long_double>(0xFF); }; ... } catch (boost::exception & e) { e << error_info<tag::long_double_still>(0xFF); throw; };
Do I understand correctly that you are worried about a bad_alloc propagating up the stack, after:
1) you catch bad_alloc
2) you stuff something in a boost exception, which allocates memory successfully
3) you catch that exception after some stack unwinding (which presumably frees more memory) and then you attempt to stuff some more info in it
Yes.
Emil Dotchevski
P.S. For the sake of clarity, I should say that you can not throw a boost::exception: it's an abstract base class.
Sorry about that, but the idea was to throw an exception and add more stuff into it as the stack unwinds and the exception propagates. -- Dean Michael C. Berris Software Engineer, Friendster, Inc. [http://cplusplus-soup.blogspot.com/] [mikhailberis@gmail.com] [+63 928 7291459] [+1 408 4049523]