[ 
http://issues.apache.org/jira/browse/STDCXX-65?page=comments#action_12359201 ] 

Martin Sebor commented on STDCXX-65:
------------------------------------

The test support/18.limits.traps.cpp exercises this behavior:
http://svn.apache.org/repos/asf/incubator/stdcxx/trunk/tests/support/18.limits.traps.cpp

> std::numeric_limits<int>::traps = false when integer arithmetic traps
> ---------------------------------------------------------------------
>
>          Key: STDCXX-65
>          URL: http://issues.apache.org/jira/browse/STDCXX-65
>      Project: STDCXX
>         Type: Bug
>   Components: 18. Language Support
>     Versions: 4.1.2
>  Environment: all
>     Reporter: Martin Sebor
>     Assignee: Martin Sebor
>     Priority: Minor
>      Fix For: 4.1.3

>
> The program below aborts. See also the related LWG issue 497:
> http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#497
> $ cat t.cpp && nice make t -r CPPOPTS=-DSIGTRAP=5 && ./t
> #include <cassert>
> #include <csetjmp>
> #include <csignal>
> #include <limits>
> std::jmp_buf env;
> extern "C" void handle_trap (int)
> {
>     std::longjmp (env, 1);
> }
> volatile int zero;
> int main ()
> {
>     const bool traps = std::numeric_limits<int>::traps;
>     bool trapped = false;
>     std::signal (SIGFPE, handle_trap);
>     std::signal (SIGTRAP, handle_trap);
>     if (0 == setjmp (env)) {
>         zero = 2 / zero;
>     }
>     else {
>         trapped = true;
>     }
>     assert (traps && trapped || !traps && !trapped);
> }
> eccp -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG    
> -D_RWSTD_USE_CONFIG -I/build/sebor/eccp-3.6-11s/include 
> -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/../rwtest 
> -I/build/sebor/dev/stdlib/../rwtest/include 
> -I/build/sebor/dev/stdlib/tests/include -DSIGTRAP=5 -A -x 
> --template_directory=/build/sebor/eccp-3.6-11s/lib -g  --display_error_number 
> --remarks --diag_suppress 193,236,340,401,261,479,487,678,679,815  t.cpp
> eccp t.o -o t -L/build/sebor/eccp-3.6-11s/rwtest -lrwtest11s 
> --template_directory=/build/sebor/eccp-3.6-11s/lib   
> -L/build/sebor/eccp-3.6-11s/lib -lstd11s   -lm
> t.cpp:30: Assertion 'traps && trapped || !traps && !trapped' failed.
> /build/sebor/eccp-3.6-11s/tests/t:__rw_assert_fail__4__rwFPCcT1iT1+0x84
> /build/sebor/eccp-3.6-11s/tests/t:main+0xcc
> /build/sebor/eccp-3.6-11s/tests/t:_start+0x5c
> Abort (core dumped)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to