
Programming Release Notes
5.2 C++ Run-Time Library
int main() {
cxxl$set_condition(pure_unix);
try {
generateACCVIO();
}
catch(...) {
puts("caught");
}
}
Note
To use this new functionality you must have a new version of
cxx_exception.h
, which is included in the CXXL$ANSI_DEF.TLB
file provided with the Version 7.3 compiler (or higher).
• The run-time library sometimes failed to destruct objects of automatic storage
duration defined in a function, if such a function exited via an exception that
could be caught. This problem has been fixed.
• The run-time library now allows the thread cancel signal (CMA$_ALERTED)
and the thread exit signal (CMA$_EXIT_THREAD) to be caught in a
catch handler with a pointer or a reference to type CXXL$PTHREAD_
CANCEL (or CX6L$PTHREAD_CANCEL) and CXXL$PTHREAD_EXIT (or
CX6L$PTHREAD_EXIT), respectively, if catching the signals are enabled.
The new types catch these signals exclusively.
Note
To use this new functionality, you must have a new version of
cxx_exception.h
, which is included in the CXXL$ANSI_DEF.TLB
provided with the V7.3 compiler (or higher).
• The C++ RTL has changed its internal mapping of SIGTRAP from SS$_
BREAK to SS$_TBIT, to match a recent C RTL change.
• The C++ RTL used to call
std::terminate( )
when a destructor raised an
exception during stack unwinding, even if that destructor did not exit via the
exception. This problem has been fixed.
• The C++ RTL used to call
std::terminate( )
, if a foreign exception (such as
a non-C++ OpenVMS condition) was raised while a C++ exception was being
processed. This behavior has been refined to calling
std::terminate( )
only
if the raised OpenVMS condition also leads to unwinding the stack.
• Because OpenVMS conditions can be caught in C++ catch handlers, the
C++ RTL converts the conditions to an internal format that matches the
representation of C++ exceptions. This conversion would sometimes lead to
incorrect information being shown in the traceback. This problem has been
fixed.
The following problems are fixed in this version of the C++ Library (Version 7.3
and higher compiler):
• As described in
http://issues.apache.org/jira/browse/STDCXX-397
(the
Apache Software Foundation Issues website), the
_ _introsort_loop( )
function in <algorithm.cc> header has a problem which, for some input
sequences, can adversely affect performance of
std::sort
. For more
5–2 Programming Release Notes