Boost logo

Boost Users :

From: Johan Nilsson (r.johan.nilsson_at_[hidden])
Date: 2008-08-13 09:52:37


Daniel Krügler wrote:
> Olav Kindt wrote:
>> Hi all,
>>
>> I have searched through some of the previous postings on this list,
>> but have not been able to find the solution – so I’ll try here.
>>
>> I have a test case that (due to an error of course) tries to run code
>> like this:
>>

[snip]

>>
>> void MyFailingTestCase()
>> {
>> MyObject * a = NULL;
>>
>> a->f();
>> }
>>
>> When running these tests in release mode – the whole process is
>> stopped by a windows dialog letting be know that there was a system
>> error (Access Violation) and asks the user to click OK/Debug.
>>
>> I have also tried to pass the –-catch_system_errors=yes, but that did
>> not help
>>
>> I am running 1_33_1 version of the library.
>> (libboost_unit_test_framework-vc80-mt-1_33_1.lib)
>>
>> Does anybody know a way around this problem?
>
> The only reasonable solution is to fix the test. According
> to standard C++ the expression "a->f()" using an a with
> a null pointer value causes undefined behaviour.
> Why don't you use a valid argument? Possible examples are:

I believe the above is just an example. Under Windows, the dereferencing of
the null pointer leads to an access violation which can be handled via SEH
(Structured Exception Handling). MSVC provides a way to translate strutured
exceptions to C++ exceptions, which Boost.Test is supposed to use.

Regards,
Johan


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net