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