![]() |
Boost : |
Subject: Re: [boost] Half-baked GIL IO extension review
From: Edd Dawson (lists_at_[hidden])
Date: 2010-12-06 19:26:15
Hi Emil,
On 12/6/2010 11:45 PM, Emil Dotchevski wrote:
> On Mon, Dec 6, 2010 at 3:10 PM, Edd Dawson<lists_at_[hidden]> wrote:
>> Looking again at the JPEG code here. As far as I can tell setjmp/longjmp
>> have been used with appropriate care, but I worry what will happen if a
>> method on a Device throws an exception, for example. I've had both Visual
>> C++ 2008 and Apple's g++ 4.0.1 crash on me in this kind of situation.
>
> Did you use -fexceptions with GCC, and if I'm not mistaken MSVC also
> has an option to assume that C functions don't throw exceptions, which
> shouldn't be used for exceptions to work.
I suspect that -fexceptions was not in play but it's conceivable that our build
system adds it automatically when compiling C. I'll double check when I'm at
work tomorrow.
>> In my code, I attempt to store an exception by doing something akin to
>> boost::current_exception(), then longjmp out to a safe point before
>> re-throwing it.
>
> Probably boost::copy_exception would be a more appropriate call in this case.
Well, this was inside a catch(...) as I have to handle arbitrary exceptions as
best as possible. But perhaps the GIL imposes a requirement on the set of
exceptions that may be thrown by a device? Again, I don't know a whole lot about
the wider library yet.
Kind regards,
Edd
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk