You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2008/05/27 17:50:41 UTC
svn commit: r660567 - in /stdcxx/branches/4.3.x: bin/ etc/config/
etc/config/src/ examples/manual/ examples/manual/in/ examples/manual/out/
tests/algorithms/ tests/include/ tests/localization/ tests/numerics/
tests/src/ tests/strings/
Author: sebor
Date: Tue May 27 08:50:30 2008
New Revision: 660567
URL: http://svn.apache.org/viewvc?rev=660567&view=rev
Log:
2008-05-27 Martin Sebor <se...@roguewave.com>
Merged revisions 656686, 650706, 653284, 650748, 650698, 657220,
652585, 653294, 653285, 654156, 653965, 659601, 653966, 652922,
654664, 657235, 652954, 654286, 659189, 659187, and 656767 from
branches/4.2.x.
2008-05-15 Eric Lemings <er...@roguewave.com>
STDCXX-871
* tests/src/printf.h: Remove documentation-only header.
* tests/include/rw_printf.h: Incorporate documentation comments
from deleted header.
2008-04-22 Martin Sebor <se...@roguewave.com>
* test/numerics/26.valarray.cassign.cpp (run_test): Disabled tests
exercising valarray specializations on a user-defined type for 4.2.1
and prior since they are known to fail to compile due to STDCXX-512.
2008-05-04 Martin Sebor <se...@roguewave.com>
STDCXX-910
* tests/src/locale.cpp (rw_localedef): Used __FILE__ to try to get
the value of TOPDIR when the environment variable is unset or empty.
(_rw_all_locales): Same.
2008-04-22 Martin Sebor <se...@roguewave.com>
* tests/src/opt_diags.cpp (_rw_match_name): Asserted (obviously
holding) preconditions to shut up bogus HP aCC 6 warning 20200:
Potential null pointer dereference.
2008-04-22 Martin Sebor <se...@roguewave.com>
STDCXX-754
* tests/src/cmdopt.cpp (rw_vsetopts): Handled malloc() failure.
Added an assertion to silence a bogus HP aCC 6/cadvise warning
#20200-D: Potential null pointer dereference. Unfortunately,
with the one gone another bogus one pops up...
2008-05-16 Travis Vitek <vi...@roguewave.com>
STDCXX-938
* tests/src/alarm.cpp [SIG_DFL]: Fix apparent typo in definition of
SIG_DFL which would have resulted in macro redefinition warnings if
both SIG_DFL and SIG_IGN were not defined in signal.h
(rw_sig_dfl): Change pointer constant to avoid crash when using
rw_alarm().
(rw_sig_ign): Ditto.
(rw_sig_hold): Ditto.
(rw_sig_restore): Ditto.
2008-05-01 Travis Vitek <vi...@roguewave.com>
STDCXX-842
* tests/localization/22.locale.codecvt.out.cpp: Reserve space
for null terminator.
2008-05-04 Martin Sebor <se...@roguewave.com>
Merged rev 653293 (fixing STDCXX-695 of which STDCXX-788 is a dupe)
from trunk.
2008-05-04 Martin Sebor <se...@roguewave.com>
STDCXX-788
* 22.locale.num.put.cpp (do_test): Cast narrow character to unsigned
char before converting it to the generic charT to avoid potential sign
extension and to silence HP aCC 6 remark #4271-D: type conversion may
lose sign.
(long_test): Cast macro argument to unsigned type before shifting it
left to avoid an arithmetic overflow and to silence HP aCC 6 remark
#4300-D: Overflow while computing constant in left shift operation.
2008-05-04 Martin Sebor <se...@roguewave.com>
* tests/localization/22.locale.time.put.cpp (do_test): Used casts
to safely convert a plain char argument to the generic charT before
passing it to the tested function to silence HP aCC remark #4271-D:
type conversion may lose sign.
(make_LC_TIME): Handled fopen() failure to silence warning #20200-D:
Potential null pointer dereference is detected.
2008-05-07 Travis Vitek <vi...@roguewave.com>
* tests/localization/22.locale.num.get.cpp: Reapply r644435 accidentally
reverted in r653965.
2008-05-06 Travis Vitek <vi...@roguewave.com>
* tests/localization/22.locale.num.get.cpp: Revert r657262
and apply a simpler fix.
(test_flt_uflow): Make val static to avoid cadvise warning.
(test_dbl_uflow): Ditto.
(test_ldbl_uflow): Ditto.
2008-05-23 Farid Zaripov <fa...@epam.com>
Merged r648347 from trunk
2008-04-15 Eric Lemings <er...@roguewave.com>
* tests/strings/21.cwctype.cpp: Misplaced #endif directive.
2008-05-06 Travis Vitek <vi...@roguewave.com>
* tests/algorithms/25.random.shuffle.cpp (test_random_shuffle): Break
from loop on first assertion failure.
2008-05-02 Martin Sebor <se...@roguewave.com>
* etc/config/src/WCTYPE_T.cpp [EDG eccp]: Suppressed EDG eccp error
#450-D: the type "long long" is nonstandard when #including libc
headers.
* etc/config/src/WCTRANS_T.cpp: Same.
* etc/config/src/MBSTATE_T.cpp: Same.
* etc/config/src/WINT_T.cpp: Same.
2008-05-08 Martin Sebor <se...@roguewave.com>
STDCXX-929
* etc/config/gcc.config: Unconditionally checked code generated
by the compiler to see if it's ILP32 or LP64.
[HP-UX] (CXXFLAGS.wide, LDFLAGS.wide, LDSOFLAGS.wide): Removed
assumption that -milp64 is the default on IPF.
2008-05-16 Martin Sebor <se...@roguewave.com>
* etc/config/vacpp.config (use_tempinc): Corrected a typo introduced
in rev 652954, and removed the object file produced by compiling the
temporary source.
2008-05-02 Martin Sebor <se...@roguewave.com>
* etc/config/vacpp.config (use_tempinc): Cd to TMPDIR before
invoking the compiler to avoid trying to write into the CWD
which may be read only.
2008-05-07 Martin Sebor <se...@roguewave.com>
* examples/manual/failure.cpp (main): Demonstrated the (optional)
extensions, classes std::ios::badbit_set, std::ios::eofbit_set,
and std::ios::failbit_set.
* examples/manual/in/failure.in: Added "interesting" input file.
* examples/manual/out/failure.out: Set expected output.
2008-05-22 Martin Sebor <se...@roguewave.com>
* bin/genxviews (process_results): Removed debugging output.
2008-05-22 Martin Sebor <se...@roguewave.com>
* bin/genxviews: Added a column with the timestamp of the oldest
log and the number of new logs since the last run of the script.
Optimized away call to xbuildgen when no new logs have been added
since the last run of the script.
2008-05-15 Martin Sebor <se...@roguewave.com>
* bin/genxviews: Changed the svn:keywords property to expand
all three of HeadURL, Id, and Revision.
* bin/xbuildgen: Same.
* bin/duration: Same.
Added:
stdcxx/branches/4.3.x/examples/manual/in/failure.in
- copied unchanged from r656875, stdcxx/branches/4.2.x/examples/manual/in/failure.in
Modified:
stdcxx/branches/4.3.x/bin/buildntest (contents, props changed)
stdcxx/branches/4.3.x/bin/genxviews
stdcxx/branches/4.3.x/etc/config/gcc.config
stdcxx/branches/4.3.x/etc/config/src/MBSTATE_T.cpp
stdcxx/branches/4.3.x/etc/config/src/WCTRANS_T.cpp
stdcxx/branches/4.3.x/etc/config/src/WCTYPE_T.cpp
stdcxx/branches/4.3.x/etc/config/src/WINT_T.cpp
stdcxx/branches/4.3.x/etc/config/vacpp.config
stdcxx/branches/4.3.x/examples/manual/failure.cpp
stdcxx/branches/4.3.x/examples/manual/out/failure.out
stdcxx/branches/4.3.x/tests/algorithms/25.random.shuffle.cpp
stdcxx/branches/4.3.x/tests/include/rw_printf.h
stdcxx/branches/4.3.x/tests/localization/22.locale.codecvt.out.cpp
stdcxx/branches/4.3.x/tests/localization/22.locale.num.get.cpp
stdcxx/branches/4.3.x/tests/localization/22.locale.num.put.cpp
stdcxx/branches/4.3.x/tests/localization/22.locale.time.put.cpp
stdcxx/branches/4.3.x/tests/numerics/26.valarray.cassign.cpp
stdcxx/branches/4.3.x/tests/src/alarm.cpp
stdcxx/branches/4.3.x/tests/src/cmdopt.cpp
stdcxx/branches/4.3.x/tests/src/locale.cpp
stdcxx/branches/4.3.x/tests/src/opt_diags.cpp
stdcxx/branches/4.3.x/tests/strings/21.cwctype.cpp
Modified: stdcxx/branches/4.3.x/bin/buildntest
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/bin/buildntest?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/bin/buildntest (original)
+++ stdcxx/branches/4.3.x/bin/buildntest Tue May 27 08:50:30 2008
@@ -353,12 +353,12 @@
echo "### running $0 $* [$#]"
# script's revision number
-myrev='$Revision: 656702 $'
+myrev='$Revision$'
myrev=${myrev#'$Revision: '} # strip leading text
myrev=${myrev%' $'} # strip trailing text
# URL to this version of the script in the repository
-myurl='$HeadURL: https://svn.apache.org/repos/asf/stdcxx/branches/4.2.x/bin/buildntest $'
+myurl='$HeadURL$'
myurl=${myurl#'$HeadURL: '} # strip leading text
myurl=${myurl%' $'} # strip trailing text
myurl="$myurl?view=markup&rev=$myrev"
Propchange: stdcxx/branches/4.3.x/bin/buildntest
------------------------------------------------------------------------------
--- svn:keywords (original)
+++ svn:keywords Tue May 27 08:50:30 2008
@@ -1 +1 @@
-Id
+HeadURL Id Revision
Modified: stdcxx/branches/4.3.x/bin/genxviews
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/bin/genxviews?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/bin/genxviews (original)
+++ stdcxx/branches/4.3.x/bin/genxviews Tue May 27 08:50:30 2008
@@ -205,12 +205,14 @@
<th>Operating System</td>
<th>Architecture</td>
<th>Compiler</td>
- <th>Build Results</td>
- <th>Logs</td>
- <th>Time<br>(sec)</td>
+ <th title="Cross-build result page">Build Results</td>
+ <th title="Total number of logs">Logs</td>
+ <th title="Number of logs added since the last run">New</td>
+ <th title="Timestamp of oldest log">Age</td>
+ <th title="Time to process all logs">Time<br>(sec)</td>
</tr>
- </thead>
- <tbody>
+ </thead>
+ <tbody>
EOF
@@ -228,10 +230,10 @@
fi
cat<<EOF | output
- <tr>
- <td>$osname</td>
- <td>$arch</td>
- <td>$compiler</td>
+ <tr>
+ <td>$osname</td>
+ <td>$arch</td>
+ <td>$compiler</td>
EOF
# build types:
@@ -247,6 +249,8 @@
suffixes="a A d D s S"
unset buildlogs
+ unset oldest
+
count=0
for b in $btypes; do
@@ -261,8 +265,16 @@
done
done
+ if [ -e $outdir/$xfile ]; then
+ # count the number of logs that are newer than the cross-build file
+ newlogs=`find $logdir/ -name "$alllogs" -newer $outdir/$xfile | wc -l`
+ else
+ # cross-build file doesn't exist yet, all logs are considered new
+ newlogs=$count
+ fi
+
if [ $verbose -ne 0 ]; then
- echo "$myname: found $count logs: $buildlogs"
+ echo "$myname: found $count logs ($newlogs new): $buildlogs"
fi
# create a title for the page
@@ -273,16 +285,26 @@
if [ "$buildlogs" = "" ]; then
# format missing logs in italics
- output " <td><i>$xfile</i></td>"
+ output " <td><i>$xfile</i></td>"
else
- if [ $verbose -ne 0 ]; then
- echo "$myname: $XBUILDGEN $verarg -s -o$outdir/$xfile -T\"$title\" $buildlogs"
- fi
+ output " <td><a href=\"$xfile\">$xfile</a></td>"
+
+ oldest=` cd $logdir && ls -lrt $buildlogs | head -n 1 \
+ | awk '{ print $6 " " $7 " " $8 }'`
- output " <td><a href=\"$xfile\">$xfile</a></td>"
+ if [ $newlogs -gt 0 ]; then
- if [ $dryrun -eq 0 ]; then
- $XBUILDGEN $verarg -s -o$outdir/$xfile -T"$title" $buildlogs
+ # only invoken xbuildgen when there are new logs to proecess
+ # otherwise simply point at the previously generated cross
+ # build file
+
+ if [ $verbose -ne 0 ]; then
+ echo "$myname: $XBUILDGEN $verarg -s -o$outdir/$xfile -T\"$title\" $buildlogs"
+ fi
+
+ if [ $dryrun -eq 0 ]; then
+ $XBUILDGEN $verarg -s -o$outdir/$xfile -T"$title" $buildlogs
+ fi
fi
fi
@@ -297,9 +319,11 @@
duration=`expr $end - $duration`
cat<<EOF | output
- <td>$count</td>
- <td>$duration</td>
- </tr>
+ <td>$count</td>
+ <td>$newlogs</td>
+ <td>$oldest</td>
+ <td>$duration</td>
+ </tr>
EOF
}
Modified: stdcxx/branches/4.3.x/etc/config/gcc.config
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/etc/config/gcc.config?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/etc/config/gcc.config (original)
+++ stdcxx/branches/4.3.x/etc/config/gcc.config Tue May 27 08:50:30 2008
@@ -273,45 +273,47 @@
SINGL_CPPFLAGS =
SINGL_LDFLAGS =
-# (try to) determine the architecture via the (non-standard) -p option
-# the option is recognized on at least HP-UX, IRIX, and Linux (are there
-# any other systems running on IA64?)
-arch=$(shell uname -p 2>/dev/null)
+# gcc can generate 32-bit or 64-bit code by default, depending
+# on how it's configured
+# determine whether the default compiler invocation produces
+# wide (64-bit) or narrow (32-bit) code and set compiler,
+# linker, and other options accordingly
+wide = $(shell cd /tmp; tmpfile=stdcxx-longsize-$$; export tmpfile; \
+ echo "int main() { return 8 == sizeof (long); }" \
+ > $$tmpfile.c \
+ && $(CXX) $$tmpfile.c >/dev/null 2>&1 -o $$tmpfile; \
+ ./$$tmpfile; echo $$?; rm -f $$tmpfile.c $$tmpfile)
+
+ifeq ($(wide),0)
+ # narrow (32-bit) mode is implicit
+ # use wide (64-bit) flags to explicitly enable LP64 mode
+
+ ifeq ($(OSNAME),HP-UX)
+ # -milp32 and -mlp64 are options specific to HP-UX
+ CXXFLAGS.wide = -mlp64
+ LDFLAGS.wide = -mlp64
+ LDSOFLAGS.wide = -mlp64
+ ARFLAGS.wide =
+ else
+ CXXFLAGS.wide = -m64
+ LDFLAGS.wide = -m64
+ LDSOFLAGS.wide = -m64
+ ARFLAGS.wide =
+ endif
+
+else
+ # wide (64-bit) mode is implicit
+ # use narrow (32-bit) flags to explicitly enable ILP32 mode
-ifeq ($(arch),ia64)
- # LP64 is the default (implicit) setting on IA64
ifeq ($(OSNAME),HP-UX)
- # -milp32, -mlp64, etc. are options specific to HP-UX
CXXFLAGS.narrow = -milp32
LDFLAGS.narrow = -milp32
LDSOFLAGS.narrow = -milp32
ARFLAGS.narrow =
- endif
-else
- # determine whether the default compiler invocation produces
- # wide (64-bit) or narrow (32-bit) code and set compiler,
- # linker, and other flags accordingly
- wide = $(shell tmpfile=/tmp/longsize-$$; export tmpfile; \
- echo "int main() { return 8 == sizeof (long); }" \
- > $$tmpfile.c \
- && $(CXX) $$tmpfile.c >/dev/null 2>&1 -o $$tmpfile; \
- $$tmpfile; echo $$?; rm -f $$tmpfile.c $$tmpfile)
-
- ifeq ($(wide),0)
- # wide (64-bit) flags
- CXXFLAGS.wide = -m64
- LDFLAGS.wide = -m64
- LDSOFLAGS.wide = -m64
- ARFLAGS.wide =
-
- # narrow (32-bit) mode is implicit
else
- # narrow (32-bit) flags
CXXFLAGS.narrow = -m32
LDFLAGS.narrow = -m32
LDSOFLAGS.narrow = -m32
ARFLAGS.narrow =
-
- # wide (64-bit) mode is implicit
endif
endif
Modified: stdcxx/branches/4.3.x/etc/config/src/MBSTATE_T.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/etc/config/src/MBSTATE_T.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/etc/config/src/MBSTATE_T.cpp (original)
+++ stdcxx/branches/4.3.x/etc/config/src/MBSTATE_T.cpp Tue May 27 08:50:30 2008
@@ -18,12 +18,24 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 1999-2007 Rogue Wave Software, Inc.
+ * Copyright 1999-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
#include "config.h"
+#if defined (__EDG__) \
+ && !defined (__DECCXX) \
+ && !defined (__HP_aCC) \
+ && !defined (__INTEL_COMPILER) \
+ && !defined (_SGI_COMPILER_VERSION)
+ // disable error #450-D: the type "long long" is nonstandard
+ // when using the vanilla EDG eccp in strict mode (i.e., w/o
+ // long long support)
+# pragma diag_suppress 450
+#endif // EDG eccp on Linux
+
+
// defined to get the correct definition of mbstate_t, available on HPUX;
// once we get the correct size of the struct, _RWSTD_NO_MBSTATE_T is
// defined in rw/_config.h and we (and the users of the library) are left
Modified: stdcxx/branches/4.3.x/etc/config/src/WCTRANS_T.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/etc/config/src/WCTRANS_T.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/etc/config/src/WCTRANS_T.cpp (original)
+++ stdcxx/branches/4.3.x/etc/config/src/WCTRANS_T.cpp Tue May 27 08:50:30 2008
@@ -18,12 +18,24 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 1999-2007 Rogue Wave Software, Inc.
+ * Copyright 1999-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
#include "config.h"
+#if defined (__EDG__) \
+ && !defined (__DECCXX) \
+ && !defined (__HP_aCC) \
+ && !defined (__INTEL_COMPILER) \
+ && !defined (_SGI_COMPILER_VERSION)
+ // disable error #450-D: the type "long long" is nonstandard
+ // when using the vanilla EDG eccp in strict mode (i.e., w/o
+ // long long support)
+# pragma diag_suppress 450
+#endif // EDG eccp on Linux
+
+
#ifndef _RWSTD_NO_WCHAR_H
# include <wchar.h>
#endif // _RWSTD_NO_WCHAR_H
Modified: stdcxx/branches/4.3.x/etc/config/src/WCTYPE_T.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/etc/config/src/WCTYPE_T.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/etc/config/src/WCTYPE_T.cpp (original)
+++ stdcxx/branches/4.3.x/etc/config/src/WCTYPE_T.cpp Tue May 27 08:50:30 2008
@@ -18,12 +18,25 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 1999-2007 Rogue Wave Software, Inc.
+ * Copyright 1999-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
#include "config.h"
+
+#if defined (__EDG__) \
+ && !defined (__DECCXX) \
+ && !defined (__HP_aCC) \
+ && !defined (__INTEL_COMPILER) \
+ && !defined (_SGI_COMPILER_VERSION)
+ // disable error #450-D: the type "long long" is nonstandard
+ // when using the vanilla EDG eccp in strict mode (i.e., w/o
+ // long long support)
+# pragma diag_suppress 450
+#endif // EDG eccp on Linux
+
+
#ifndef _RWSTD_NO_WCHAR_H
# include <wchar.h>
#endif // _RWSTD_NO_WCHAR_H
Modified: stdcxx/branches/4.3.x/etc/config/src/WINT_T.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/etc/config/src/WINT_T.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/etc/config/src/WINT_T.cpp (original)
+++ stdcxx/branches/4.3.x/etc/config/src/WINT_T.cpp Tue May 27 08:50:30 2008
@@ -18,12 +18,24 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 1999-2007 Rogue Wave Software, Inc.
+ * Copyright 1999-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
#include "config.h"
+#if defined (__EDG__) \
+ && !defined (__DECCXX) \
+ && !defined (__HP_aCC) \
+ && !defined (__INTEL_COMPILER) \
+ && !defined (_SGI_COMPILER_VERSION)
+ // disable error #450-D: the type "long long" is nonstandard
+ // when using the vanilla EDG eccp in strict mode (i.e., w/o
+ // long long support)
+# pragma diag_suppress 450
+#endif // EDG eccp on Linux
+
+
#ifndef _RWSTD_NO_WCHAR_H
# include <wchar.h>
#endif // _RWSTD_NO_WCHAR_H
Modified: stdcxx/branches/4.3.x/etc/config/vacpp.config
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/etc/config/vacpp.config?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/etc/config/vacpp.config (original)
+++ stdcxx/branches/4.3.x/etc/config/vacpp.config Tue May 27 08:50:30 2008
@@ -241,10 +241,11 @@
# check if the -qtemplateregistry option is recognized
-use_tempinc=$(shell echo "int i;" >/tmp/foo.$$$$.c \
+use_tempinc=$(shell cd $${TMPDIR:=/tmp} \
+ && echo "int i;" >foo.$$$$.c \
&& $(CXX) -c -qmaxerr=1:w -qtemplateregistry \
- /tmp/foo.$$$$.c >/dev/null 2>&1; \
- echo $$?; rm /tmp/foo.$$$$.c)
+ foo.$$$$.c >/dev/null 2>&1; \
+ echo $$?; rm -f foo.$$$$.c foo.$$$$.o)
# template repository/registry name override
Modified: stdcxx/branches/4.3.x/examples/manual/failure.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/examples/manual/failure.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/examples/manual/failure.cpp (original)
+++ stdcxx/branches/4.3.x/examples/manual/failure.cpp Tue May 27 08:50:30 2008
@@ -1,6 +1,7 @@
/**************************************************************************
*
- * failure.cpp - Example program demonstrating ios::failure.
+ * failure.cpp - Example program demonstrating the use of ios::failure
+ * and its extendsions provided by this implementation.
*
* $Id$
*
@@ -22,7 +23,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 1994-2006 Rogue Wave Software.
+ * Copyright 1994-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -31,39 +32,78 @@
#include <examples.h>
+
#ifndef _RWSTD_NO_EXCEPTIONS
int main ()
{
- try {
- // Enable exceptions in cin.
- std::cin.exceptions (std::ios::eofbit);
-
- // Clear all bits and set eofbit.
- std::cin.clear (std::ios::eofbit);
- }
- catch (const std::ios::failure &e) {
- std::cout << "Caught an exception: " << e.what () << std::endl;
- }
- catch (const std::exception &e) {
- std::cout << "Caught an exception: " << e.what () << std::endl;
-
- return 1; // Indicate failure.
- }
- catch (...) {
- std::cout << "Caught an unknown exception" << std::endl;
-
- return 1; // Indicate failure.
- }
+ const std::ios::iostate allbits =
+ std::ios::badbit | std::ios::eofbit | std::ios::failbit;
+
+ // Enable all exceptions in cin.
+ std::cin.exceptions (allbits);
+
+ while (!std::cin.eof ()) {
+
+ // Clear state bits.
+ std::cin.clear ();
+
+ try {
+ short i;
+ char ch;
+
+ // Try to extract a character and an integer.
+ std::cin >> ch >> i;
+
+ std::cout << ch << ' ' << i << '\n';
+ }
+
+#ifndef _RWSTD_NO_EXT_FAILURE
+
+ // Classes badbit_set, eofbit_set, and failbit_set are
+ // derived from failure and are optional extensions of
+ // this implementation.
+
+ catch (const std::ios::badbit_set &e) {
+ std::cout << "Caught std::ios::badbit_set: "
+ << e.what () << '\n';
+ }
+ catch (const std::ios::eofbit_set &e) {
+ std::cout << "Caught std::ios::eofbit_set: "
+ << e.what () << '\n';
+ }
+ catch (const std::ios::failbit_set &e) {
+ std::cout << "Caught std::ios::failbit_set: "
+ << e.what () << '\n';
+ }
+
+#endif // _RWSTD_NO_EXT_FAILURE
+
+ catch (const std::ios::failure &e) {
+ std::cout << "Caught std::ios::failure: "
+ << e.what () << '\n';
+ }
+ catch (const std::exception &e) {
+ std::cout << "Caught std::exception: "
+ << e.what () << '\n';
+
+ return 1; // Indicate error.
+ }
+ catch (...) {
+ std::cout << "Caught an unknown exception\n";
+
+ return 1; // Indicate error.
+ }
+ }
- return 0;
+ return 0;
}
-#else
+#else // if defined (_RWSTD_NO_EXCEPTIONS)
int main ()
{
- std::cout << "Exceptions not supported." << std::endl;
+ std::cout << "Exceptions not supported\n";
return 0;
}
Modified: stdcxx/branches/4.3.x/examples/manual/out/failure.out
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/examples/manual/out/failure.out?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/examples/manual/out/failure.out (original)
+++ stdcxx/branches/4.3.x/examples/manual/out/failure.out Tue May 27 08:50:30 2008
@@ -1 +1,5 @@
-Caught an exception: std::cin: stream object has set ios::eofbit
+a 1234
+Caught std::ios::failbit_set: std::cin: stream object has set ios::failbit
+c 2345
+Caught std::ios::failbit_set: std::cin: stream object has set ios::failbit
+Caught std::ios::failure: std::cin: stream object has set failbit, eofbit
Modified: stdcxx/branches/4.3.x/tests/algorithms/25.random.shuffle.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/algorithms/25.random.shuffle.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/algorithms/25.random.shuffle.cpp (original)
+++ stdcxx/branches/4.3.x/tests/algorithms/25.random.shuffle.cpp Tue May 27 08:50:30 2008
@@ -307,14 +307,12 @@
};
for (std::size_t i = 0; i != sizeof array / sizeof *array; ++i) {
- const bool success = array [i] == result [i];
- if (!success) {
- rw_assert (0, 0, line,
- "randomly shuffled sequence failed to match "
- "the expected result (data portability failure) "
- "%d != %d at %zu",
- array [i], result [i], i + 1);
- }
+ if (!rw_assert (array [i] == result [i], 0, line,
+ "randomly shuffled sequence failed to match "
+ "the expected result (data portability failure) "
+ "%d != %d at %zu",
+ array [i], result [i], i + 1))
+ break;
}
#else
Modified: stdcxx/branches/4.3.x/tests/include/rw_printf.h
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/include/rw_printf.h?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/include/rw_printf.h (original)
+++ stdcxx/branches/4.3.x/tests/include/rw_printf.h Tue May 27 08:50:30 2008
@@ -160,4 +160,186 @@
rw_asnprintf (char** pbuf, _RWSTD_SIZE_T *pbufsize, const char *fmt, ...);
+/**
+ * @page rwtest-fmtspec Formated Output Directives and Conversion Specifiers
+ *
+ * The RWTest library supports all formatted output directives specified
+ * by the C99 standard as well as many other directive extensions. Only
+ * deviations, extensions, and other implmementation-defined behavior are
+ * described below. Consult your system and/or compiler documentation
+ * for specifications of the standard formatting output directives.
+ *
+ * Unless specified otherwise, the following caveats apply to all
+ * directives and conversions. Directives that accept a pointer argument
+ * will convert a null pointer into the string literal <tt>(null)</tt>.
+ *
+ *
+ * @section rwtest-fmtspec-c89 C89 Directives
+ *
+ * @subsection rwtest-fmtspec-c89-ptr Pointer \%p \%\#p
+ *
+ * The argument is a pointer to \c void. The value of the pointer is
+ * converted to a sequence of hexadecimal digits. The number of
+ * converted digits depends on the size of the \c void* type. The
+ * "alternate form" expressed by \c \%\#p immediately precedes converted
+ * digits with a \c 0x prefix.
+ *
+ *
+ * @section rwtest-fmtspec-c99 C99 Directives
+ *
+ * No known deviations or implementation-defined behavior.
+ *
+ *
+ * @section rwtest-fmtspec-ext RWTest Extensions
+ *
+ * @subsection rwtest-fmtspec-ext-bool Boolean \%b
+ *
+ * The argument is a value convertible to \c bool type. If the value
+ * of the argument is nonzero, the value is converted to the string
+ * literal \c true. Otherwise, the value converts to \c false.
+ *
+ * @subsection rwtest-fmtspec-ext-esc-c Escaped Character \%{c} \%{\#c}
+ *
+ * The argument is an integer value converted to <tt>unsigned char</tt>
+ * type. For non-printable characters, the resulting output is formatted
+ * as the corresponding escape sequence. (The value for a horizontal
+ * tab character for example is formatted as the string literal
+ * <tt>\\t</tt> and a zero value may be formatted as the string literal
+ * <tt>\\x00</tt>. In the alternate form, the resulting output is
+ * immediately surrounded with a single quotation mark <tt>'</tt>.
+ *
+ * @subsection rwtest-fmtspec-ext-esc-lc Escaped Wide Character \%{lc} \%{\#lc}
+ *
+ * Similar to the escaped character directive <tt>%{c}</tt> and quoted
+ * escaped character directive <tt>%{\#c}</tt> respectively, except
+ * that the argument is a value of <tt>wchar_t</tt> type.
+ *
+ * @subsection rwtest-fmtspec-ext-s Quoted Character String \%{\#s}
+ *
+ * Similar to the character string directive <tt>%s</tt> except that the
+ * resulting output is surrounded with a double quotation mark <tt>"</tt>.
+ *
+ * @subsection rwtest-fmtspec-ext-ls Quoted Wide Character String \%{\#ls}
+ *
+ * Similar to the quoted character string directive <tt>%{\#s}</tt>
+ * except that the argument is a pointer to a null-terminate sequence of
+ * <tt>wchar_t</tt> type.
+ *
+ * @subsection rwtest-fmtspec-ext-err Error Code \%m \%{\#m}
+ *
+ * The argument is an integer value representing a system-dependent error
+ * code. In the first form, the value is interpreted as an argument of
+ * the \c strerror() function. The formatted result is the return value
+ * of this function using this parameter value. In the second form, the
+ * formatted result is a character sequence representing the
+ * corresponding error name (e.g. \c ENOMEM) if applicable or equivalent
+ * numeric sequence in decimal notation otherwise.
+ *
+ * @subsection rwtest-fmtspec-ext-sig Signal \%K
+ *
+ * The argument is an integer value representing a system-dependent
+ * signal. The resulting output is a character sequence representing
+ * the name of corresponding signal (e.g. \c SIGABRT) if
+ * applicable or equivalent numeric sequence in decimal notation
+ * otherwise.
+ *
+ * @subsection rwtest-fmtspec-ext-bits Bitset \%{b}
+ *
+ * The argument is a pointer to an array of \c char. NOT YET COMPLETE
+ *
+ * @subsection rwtest-fmtspec-ext-Ai Integer Array \%{Ao} \%{Ad} \%{Ax}
+ *
+ * The argument is a pointer to an array of integer type. The resulting
+ * output is formatted as a string of comma-separated integer values.
+ * The notation of each integer value is specified by <tt>o</tt> for
+ * octal, <tt>d</tt> for decimal, or <tt>x</tt> for hexadcimal. An
+ * optional field width specifies the size of elements in the array
+ * (defaults to 1). An optional precision specifies the length of the
+ * array. In the alternate form, the resulting output for octal and
+ * hexidecimal integer values are prefixed with string literals
+ * <tt>0</tt> and <tt>0x</tt> respectively.
+ *
+ * @subsection rwtest-fmtspec-ext-Is Stream State \%{Is} \%{\#Is}
+ *
+ * The argument is a value of type <tt>std::ios_base::iostate</tt>. In
+ * the plain form, the resulting ouput is formatted as a sequence of one
+ * or more unqualified names corresponding to the \c iostate enumerators,
+ * separated by the OR operator (<tt>|</tt>). In the extended form, the
+ * resulting output is prefixed with the string literal
+ * <tt>std::ios_base::</tt> indicating the qualfied namespace.
+ *
+ * @subsection rwtest-fmtspec-ext-Io Open Mode \%{Io} \%{\#Io}
+ *
+ * Similar to the <tt>%{Is}</tt> directive except the argument is a
+ * value of the <tt>std::ios_base::openmode</tt> enumeration type and
+ * names in the resulting output correspond to enumerators of this type.
+ *
+ * @subsection rwtest-fmtspec-ext-Iw Seek Direction \%{Iw} \%{\#Iw}
+ *
+ * The argument is a value of type <tt>std::ios_base::seekdir</tt>. In
+ * the plain form, the resulting ouput is formatted as the unqualified
+ * name corresponding to one of the \c seekdir enumerators. In the
+ * extended form, the enumerator is qualified with the enclosing
+ * namespace.
+ *
+ * @subsection rwtest-fmtspec-ext-If Format Flag \%{If} \%{\#Iw}
+ *
+ * Similar to the <tt>%{Is}</tt> directive except the argument is a
+ * value of the <tt>std::ios_base::fmtflags</tt> enumeration type and
+ * names in the resulting output correspond to enumerators of this type.
+ *
+ * @subsection rwtest-fmtspec-ext-Lc Locate Category \%{Lc} \%{\#Lc}
+ *
+ * The argument is an integer type representing a constant defined by
+ * the C <tt><locale.h></tt> header (identified by an <tt>LC_</tt>
+ * prefix) or a <tt>std::locale::category</tt> constant defined by
+ * the C++ <tt><locale></tt> header. The resulting output is
+ * formatted as a character string representing the name of the C or C++
+ * constant enclosed in square brackets (<tt>[</tt>) and <tt>]</tt>).
+ * In the alternate form, the formatted output for C++ constants is
+ * prefixed with the string literal <tt>std::locale::</tt> indicating
+ * the qualified namespace.
+ *
+ * @subsection rwtest-fmtspec-ext-LC Character Classifiers \%{LC} \%{\#LC}
+ *
+ * The argument is an integer type representing enumerators of the
+ * <tt>std::ctype_base::mask</tt> enumeration. The resulting output is
+ * formatted as a character string representing the name of the
+ * enumerator enclosed in square brackets (<tt>[</tt>) and <tt>]</tt>).
+ * In the alternate form, the enumerator is prefixed with the string
+ * literal <tt>std::ctype_base::</tt> indicating the qualified
+ * namespace.
+ *
+ * @subsection rwtest-fmtspec-ext-pid Process Identifier \%{P}
+ *
+ * The argument is a value of the portable \c rw_pid_t type. The
+ * resulting output is formatted as a numeric sequence of digits
+ * representing the corresponding process identifier. The \c P
+ * specifier may be preceded by optional width, justification, and
+ * precision qualifiers.
+ *
+ * @subsection rwtest-fmtspec-ext-str String \%{S}
+ *
+ * The argument is a pointer to an object of the \c std::string class.
+ * If the pointer is null, the resulting output is the string literal
+ * <tt>(null)</tt>. Otherwise, the pointer \c P is converted by calling
+ * the \c P->c_str() function and the result is formatted identical to
+ * the <tt>%s</tt> character string directive.
+ *
+ * @subsection rwtest-fmtspec-ext-tm Time Structure \%{t} \%{\#t}
+ *
+ * The argument is a pointer to a \c tm structure. If the pointer is
+ * null, the resulting output is the string literal \c (null). In the
+ * plain form, the resulting output for a valid pointer is formatted
+ * similar (but not necessarily identical) to the return value of the
+ * \c asctime() function. If the value of any structure member is
+ * outside its valid range, the resulting output is formatting using the
+ * alternate form. In the alternate form, the resulting output is
+ * formatted as a comma-separated sequence of members enclosed in braces
+ * where each member is of the format "name=value [range]". The
+ * "[range]" is only shown if the value is not in the valid range for
+ * the respective member.
+ *
+ */
+
#endif // RW_PRINTF_H_INCLUDED
Modified: stdcxx/branches/4.3.x/tests/localization/22.locale.codecvt.out.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/localization/22.locale.codecvt.out.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/localization/22.locale.codecvt.out.cpp (original)
+++ stdcxx/branches/4.3.x/tests/localization/22.locale.codecvt.out.cpp Tue May 27 08:50:30 2008
@@ -197,7 +197,7 @@
struct WideCode
{
wchar_t wchar;
- char mbchar [MB_LEN_MAX];
+ char mbchar [MB_LEN_MAX + 1];
};
typedef WideCode mb_char_array_t [MB_LEN_MAX];
Modified: stdcxx/branches/4.3.x/tests/localization/22.locale.num.get.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/localization/22.locale.num.get.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/localization/22.locale.num.get.cpp (original)
+++ stdcxx/branches/4.3.x/tests/localization/22.locale.num.get.cpp Tue May 27 08:50:30 2008
@@ -235,6 +235,13 @@
/**************************************************************************/
+// if non-zero expected to point to a maximum valid value
+// of type T that's being tested below (used for floating
+// point ranges)
+// on function return, the pointed to value is overwritten
+// with the actual extracted value
+void *pmax = 0;
+
enum IterType { iter_pointer, iter_istreambuf, iter_input };
@@ -244,7 +251,6 @@
const char *cname, // name of character type
IterType itype, // type of input iterator
const char *iname, // name of input iterator
- void *pmax,
nativeT val, // value expected to be extracted
const char *str, // input sequence
int eat_expect = -1, // number of consumed characters
@@ -438,7 +444,6 @@
const char *cname, // name of character type
IterType itype, // iterator type
const char *iname, // name of iterator type
- void *pmax,
nativeT val, // value expected to be extracted
const char *str, // input sequence
int eat_expect = -1, // number of consumed characters
@@ -449,15 +454,15 @@
switch (ctype) {
case narrow_char:
return do_test (lineno, (char*)0, cname, itype, iname,
- pmax, val, str, eat_expect, flags, err_expect, grouping);
+ val, str, eat_expect, flags, err_expect, grouping);
case wide_char:
return do_test (lineno, (wchar_t*)0, cname, itype, iname,
- pmax, val, str, eat_expect, flags, err_expect, grouping);
+ val, str, eat_expect, flags, err_expect, grouping);
case user_char:
break;
#if 0 // disabled
return do_test (lineno, (UserChar*)0, cname, itype, iname,
- pmax, val, str, eat_expect, flags, err_expect, grouping);
+ val, str, eat_expect, flags, err_expect, grouping);
#endif // disabled
}
@@ -497,8 +502,7 @@
/*************************************************************************/
#define TEST do_test
-#define T __LINE__, ctype, cname, itype, iname, 0
-#define T_MAX __LINE__, ctype, cname, itype, iname, &val
+#define T __LINE__, ctype, cname, itype, iname
template <class numT>
@@ -2441,7 +2445,8 @@
cname, iname);
// exercise bahvior on underflow
- float val = 0;
+ static float val = 0;
+ pmax = &val;
// on underflow, get() follows C99 requirements on strtof()
// i.e., it stores a value in the range [0, +/-FLT_MIN]
@@ -2452,34 +2457,35 @@
// normalized positive number in the return type; whether
// errno acquires the value ERANGE is implementation-defined.
- TEST (T_MAX, (val = FLT_MIN, 0.0f), "1.111111e-9999", 14, 0, Eof);
+ TEST (T, (val = FLT_MIN, 0.0f), "1.111111e-9999", 14, 0, Eof);
rw_assert (!(val < 0.0), 0, __LINE__,
"correct sign after positive underflow");
- TEST (T_MAX, (val = 0.0f, -FLT_MIN), "-1.111111e-9999", 15, 0, Eof);
+ TEST (T, (val = 0.0f, -FLT_MIN), "-1.111111e-9999", 15, 0, Eof);
rw_assert (!(val > 0.0), 0, __LINE__,
"correct sign after negative underflow");
if (1.234567e-39 < FLT_MIN) {
- TEST (T_MAX, (val = FLT_MIN, 0.0f), "1.234567e-39", 12, 0, Eof);
- TEST (T_MAX, (val = 0.0f, -FLT_MIN), "-1.234567e-39", 13, 0, Eof);
+ TEST (T, (val = FLT_MIN, 0.0f), "1.234567e-39", 12, 0, Eof);
+ TEST (T, (val = 0.0f, -FLT_MIN), "-1.234567e-39", 13, 0, Eof);
}
if (1.234567e-49 < FLT_MIN) {
- TEST (T_MAX, (val = FLT_MIN, 0.0f), "1.234567e-49", 12, 0, Eof);
- TEST (T_MAX, (val = 0.0f, -FLT_MIN), "-1.234567e-49", 13, 0, Eof);
+ TEST (T, (val = FLT_MIN, 0.0f), "1.234567e-49", 12, 0, Eof);
+ TEST (T, (val = 0.0f, -FLT_MIN), "-1.234567e-49", 13, 0, Eof);
}
if (1.234567e-99 < FLT_MIN) {
- TEST (T_MAX, (val = FLT_MIN, 0.0f), "1.234567e-99", 12, 0, Eof);
- TEST (T_MAX, (val = 0.0f, -FLT_MIN), "-1.234567e-99", 13, 0, Eof);
+ TEST (T, (val = FLT_MIN, 0.0f), "1.234567e-99", 12, 0, Eof);
+ TEST (T, (val = 0.0f, -FLT_MIN), "-1.234567e-99", 13, 0, Eof);
}
// exercise facet's behavior on underflow:
// parsing succeeds (fail is clear), +/-min is stored
- TEST (T_MAX, FLT_MIN, _RWSTD_STRSTR ( _RWSTD_DBL_MIN), -1, 0, Eof);
- TEST (T_MAX, -FLT_MIN, _RWSTD_STRSTR (-_RWSTD_DBL_MIN), -1, 0, Eof);
+ TEST (T, FLT_MIN, _RWSTD_STRSTR ( _RWSTD_DBL_MIN), -1, 0, Eof);
+ TEST (T, -FLT_MIN, _RWSTD_STRSTR (-_RWSTD_DBL_MIN), -1, 0, Eof);
+ pmax = 0; // reset before next test
rw_info (0, 0, 0, "std::num_get<%s, %s>::get (..., float&) on overflow",
@@ -2610,7 +2616,8 @@
cname, iname);
// exercise bahvior on underflow
- double val = DBL_MIN;
+ static double val = DBL_MIN;
+ pmax = &val;
// on underflow, get() follows C99 requirements on strtod()
// i.e., it stores a value in the range [0, +/-DBL_MIN]
@@ -2621,24 +2628,25 @@
// normalized positive number in the return type; whether
// errno acquires the value ERANGE is implementation-defined.
- TEST (T_MAX, (val = DBL_MIN, 0.0), "1.111111e-9999", 14, 0, Eof);
- TEST (T_MAX, (val = 0.0, -DBL_MIN), "-1.111111e-9999", 15, 0, Eof);
+ TEST (T, (val = DBL_MIN, 0.0), "1.111111e-9999", 14, 0, Eof);
+ TEST (T, (val = 0.0, -DBL_MIN), "-1.111111e-9999", 15, 0, Eof);
if (1.23456789e-309L < DBL_MIN) {
- TEST (T_MAX, (val = DBL_MIN, 0.0), "1.23456789e-309", 15, 0, Eof);
- TEST (T_MAX, (val = 0.0, -DBL_MIN), "-1.23456789e-309", 16, 0, Eof);
+ TEST (T, (val = DBL_MIN, 0.0), "1.23456789e-309", 15, 0, Eof);
+ TEST (T, (val = 0.0, -DBL_MIN), "-1.23456789e-309", 16, 0, Eof);
}
if (1.234567e-409L < DBL_MIN) {
- TEST (T_MAX, (val = DBL_MIN, 0.0), "1.23456789e-409", 15, 0, Eof);
- TEST (T_MAX, (val = 0.0, -DBL_MIN), "-1.23456789e-409", 16, 0, Eof);
+ TEST (T, (val = DBL_MIN, 0.0), "1.23456789e-409", 15, 0, Eof);
+ TEST (T, (val = 0.0, -DBL_MIN), "-1.23456789e-409", 16, 0, Eof);
}
if (1.234567e-999L < DBL_MIN) {
- TEST (T_MAX, (val = DBL_MIN, 0.0), "1.23456789e-999", 15, 0, Eof);
- TEST (T_MAX, (val = 0.0, -DBL_MIN), "-1.23456789e-999", 16, 0, Eof);
+ TEST (T, (val = DBL_MIN, 0.0), "1.23456789e-999", 15, 0, Eof);
+ TEST (T, (val = 0.0, -DBL_MIN), "-1.23456789e-999", 16, 0, Eof);
}
+ pmax = 0; // reset before next test
# ifdef _RWSTD_LDBL_MAX
@@ -2731,7 +2739,8 @@
cname, iname);
// exercise bahvior on underflow
- long double val = LDBL_MIN;
+ static long double val = LDBL_MIN;
+ pmax = &val;
// on underflow, get() follows C99 requirements on strtold()
// i.e., it stores a value in the range [0, +/-LDBL__MIN]
@@ -2742,22 +2751,23 @@
// normalized positive number in the return type; whether
// errno acquires the value ERANGE is implementation-defined.
- TEST (T_MAX, (val = LDBL_MIN, 0.0L), "1.987654321e-99999", 18, 0, Eof);
- TEST (T_MAX, (val = 0.0L, -LDBL_MIN), "-1.987654321e-99999", 19, 0, Eof);
+ TEST (T, (val = LDBL_MIN, 0.0L), "1.987654321e-99999", 18, 0, Eof);
+ TEST (T, (val = 0.0L, -LDBL_MIN), "-1.987654321e-99999", 19, 0, Eof);
const char fmt[] = "%Lg";
long double ld = 0.0;
if (1 == std::sscanf ("3.456789e-4932", fmt, &ld) && ld < LDBL_MIN) {
- TEST (T_MAX, (val = LDBL_MIN, 0.0L), "3.456789e-4932", 14, 0, Eof);
- TEST (T_MAX, (val = 0.0L, -LDBL_MIN), "-3.456789e-4932", 15, 0, Eof);
+ TEST (T, (val = LDBL_MIN, 0.0L), "3.456789e-4932", 14, 0, Eof);
+ TEST (T, (val = 0.0L, -LDBL_MIN), "-3.456789e-4932", 15, 0, Eof);
}
if (1 == std::sscanf ("3.456789e-9999", fmt, &ld) && ld < LDBL_MIN) {
- TEST (T_MAX, (val = LDBL_MIN, 0.0L), "3.456789e-9999", 14, 0, Eof);
- TEST (T_MAX, (val = 0.0L, -LDBL_MIN), "-3.456789e-9999", 15, 0, Eof);
+ TEST (T, (val = LDBL_MIN, 0.0L), "3.456789e-9999", 14, 0, Eof);
+ TEST (T, (val = 0.0L, -LDBL_MIN), "-3.456789e-9999", 15, 0, Eof);
}
+ pmax = 0; // reset before next test
# ifdef _RWSTD_LDBL_MAX
Modified: stdcxx/branches/4.3.x/tests/localization/22.locale.num.put.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/localization/22.locale.num.put.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/localization/22.locale.num.put.cpp (original)
+++ stdcxx/branches/4.3.x/tests/localization/22.locale.num.put.cpp Tue May 27 08:50:30 2008
@@ -22,7 +22,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 2001-2006 Rogue Wave Software.
+ * Copyright 2001-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -328,7 +328,12 @@
#endif // _RWSTD_LDBL_MAX_10_EXP
- const charT* const bufend = np.put (buf, ios, fill, val);
+ // cast the narrow fill character to unsigned char before
+ // converting it to charT to avoid potential sign extension
+ typedef unsigned char UChar;
+ const charT wfill = charT (UChar (fill));
+
+ const charT* const bufend = np.put (buf, ios, wfill, val);
// verify 22.2.2.2.2, p21
if (ios.width ()) {
@@ -1171,7 +1176,7 @@
// locale 3.0 extension
-#define BASE(n) ((n) << _RWSTD_IOS_BASEOFF)
+#define BASE(n) int (unsigned (n) << _RWSTD_IOS_BASEOFF)
// bases 0 and 10 are both base 10
// base 1 is roman (values 1 through 4999)
Modified: stdcxx/branches/4.3.x/tests/localization/22.locale.time.put.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/localization/22.locale.time.put.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/localization/22.locale.time.put.cpp (original)
+++ stdcxx/branches/4.3.x/tests/localization/22.locale.time.put.cpp Tue May 27 08:50:30 2008
@@ -405,10 +405,15 @@
std::ostreambuf_iterator<charT> it (&sb);
+ // convert the narrow fill character to the generic charT
+ // being careful to avoid (potential) sign extension
+ typedef unsigned char UChar;
+ const charT wfill = charT (UChar (fill));
+
if (patend - pat == 2 && '%' == pat [0]) {
// format character, no modifier
- *tp.put (it, ios, fill, tmb, char (wpat [1])) = charT ();
+ *tp.put (it, ios, wfill, tmb, char (wpat [1])) = charT ();
const bool success = 0 == rw_strncmp (buf, result);
@@ -425,7 +430,7 @@
else if (patend - pat == 3 && '%' == pat [0]) {
// format character preceded by a format modifier
- *tp.put (it, ios, fill, tmb, char (wpat [2]), char (wpat [1])) =
+ *tp.put (it, ios, wfill, tmb, char (wpat [2]), char (wpat [1])) =
charT ();
const bool success = 0 == rw_strncmp (buf, result);
@@ -442,7 +447,7 @@
sb.pubsetp (buf, buf + sizeof buf / sizeof *buf);
// format string
- *tp.put (it, ios, fill, tmb, wpat, wpat + (patend - pat)) = charT ();
+ *tp.put (it, ios, wfill, tmb, wpat, wpat + (patend - pat)) = charT ();
const bool success = 0 == rw_strncmp (buf, result);
@@ -507,6 +512,8 @@
return 0;
std::FILE *fout = std::fopen (srcfname, "w");
+ if (0 == fout)
+ return 0;
std::fprintf (fout, "LC_TIME\n");
@@ -643,6 +650,9 @@
return 0;
fout = std::fopen (cmfname, "w");
+ if (0 == fout)
+ return 0;
+
pcs_write (fout, 0);
std::fclose (fout);
Modified: stdcxx/branches/4.3.x/tests/numerics/26.valarray.cassign.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/numerics/26.valarray.cassign.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/numerics/26.valarray.cassign.cpp (original)
+++ stdcxx/branches/4.3.x/tests/numerics/26.valarray.cassign.cpp Tue May 27 08:50:30 2008
@@ -22,7 +22,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright (C) 2007 Rogue Wave Software, Inc.
+ * Copyright (C) 2007-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -805,15 +805,15 @@
TEST (int);
TEST (double);
-#if 0x04020000 >= _RWSTD_VER
+#if 0x04020100 >= _RWSTD_VER
- // test fails to compile with stdcxx 4.2.0 and prior due to
+ // test fails to compile with stdcxx 4.2.1 and prior due to
// STDCXX-512: http://issues.apache.org/jira/browse/STDCXX-512
rw_warn (0, 0, __LINE__,
"test of UserClass disabled in stdcxx 4.2.0 and prior "
"due to STDCXX-512");
-#else // stdcxx > 4.2.0
+#else // stdcxx >= 4.2.1
TEST (UserClass);
Modified: stdcxx/branches/4.3.x/tests/src/alarm.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/src/alarm.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/src/alarm.cpp (original)
+++ stdcxx/branches/4.3.x/tests/src/alarm.cpp Tue May 27 08:50:30 2008
@@ -44,16 +44,16 @@
// exported/imported
/* extern _TEST_EXPORT */ rw_signal_handler_t* const
-rw_sig_dfl = (rw_signal_handler_t*)-1;
+rw_sig_dfl = (rw_signal_handler_t*)0;
/* extern _TEST_EXPORT */ rw_signal_handler_t* const
-rw_sig_ign = (rw_signal_handler_t*)-2;
+rw_sig_ign = (rw_signal_handler_t*)1;
/* extern _TEST_EXPORT */ rw_signal_handler_t* const
-rw_sig_hold = (rw_signal_handler_t*)-3;
+rw_sig_hold = (rw_signal_handler_t*)2;
/* extern _TEST_EXPORT */ rw_signal_handler_t* const
-rw_sig_restore = (rw_signal_handler_t*)-4;
+rw_sig_restore = (rw_signal_handler_t*)3;
// may point to a user-defined handler for the alarm
@@ -133,7 +133,7 @@
# endif
# ifndef SIG_DFL
-# define SIG_IGN (rw_signal_handler_t*)0
+# define SIG_DFL (rw_signal_handler_t*)0
# endif // SIG_DFL
# ifndef SIG_IGN
Modified: stdcxx/branches/4.3.x/tests/src/cmdopt.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/src/cmdopt.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/src/cmdopt.cpp (original)
+++ stdcxx/branches/4.3.x/tests/src/cmdopt.cpp Tue May 27 08:50:30 2008
@@ -20,7 +20,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 2005-2006 Rogue Wave Software.
+ * Copyright 2005-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -518,6 +518,8 @@
lopt = lastopt->loptbuf_;
else {
lopt = (char*)malloc (optlen + 1);
+ if (0 == lopt)
+ return -1; // error
lastopt->lopt_ = lopt;
}
@@ -534,6 +536,8 @@
int arg_is_callback = true;
+ RW_ASSERT (0 != next);
+
if ('#' == *next) {
// examples of option specification:
// --foo# option takes an optional numeric argument
Modified: stdcxx/branches/4.3.x/tests/src/locale.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/src/locale.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/src/locale.cpp (original)
+++ stdcxx/branches/4.3.x/tests/src/locale.cpp Tue May 27 08:50:30 2008
@@ -22,7 +22,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 2001-2007 Rogue Wave Software, Inc.
+ * Copyright 2001-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -215,8 +215,22 @@
// otherwise, try to create the locale database
+ // fallback for when TOPDIR is unset or empty
+ char topdir_path_buf [] = __FILE__;
+
// use TOPDIR to determine the root of the source tree
- const char* const topdir = getenv (TOPDIR);
+ const char* topdir = getenv (TOPDIR);
+ if (!topdir || !*topdir) {
+
+ // try to get TOPDIR from __FILE__
+ char* const slash = strrchr (topdir_path_buf, _RWSTD_PATH_SEP);
+
+ if (slash) {
+ slash [-1] = '\0';
+ topdir = topdir_path_buf;
+ }
+ }
+
if (!topdir || !*topdir) {
rw_error (0, __FILE__, __LINE__,
"the environment variable %s is %s",
@@ -1097,8 +1111,22 @@
_rw_lookup_table_t countries_map;
_rw_lookup_table_t encodings_map;
+ // fallback for when TOPDIR is unset or empty
+ char topdir_path_buf [] = __FILE__;
+
// use TOPDIR to determine the root of the source tree
- const char* const topdir = getenv (TOPDIR);
+ const char* topdir = getenv (TOPDIR);
+ if (!topdir || !*topdir) {
+
+ // try to get TOPDIR from __FILE__
+ char* const slash = strrchr (topdir_path_buf, _RWSTD_PATH_SEP);
+
+ if (slash) {
+ slash [-1] = '\0';
+ topdir = topdir_path_buf;
+ }
+ }
+
if (!topdir || !*topdir) {
rw_error (0, __FILE__, __LINE__,
"the environment variable %s is %s",
Modified: stdcxx/branches/4.3.x/tests/src/opt_diags.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/src/opt_diags.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/src/opt_diags.cpp (original)
+++ stdcxx/branches/4.3.x/tests/src/opt_diags.cpp Tue May 27 08:50:30 2008
@@ -22,7 +22,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 1994-2006 Rogue Wave Software.
+ * Copyright 1994-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -282,6 +282,8 @@
break;
}
+ RW_ASSERT (0 != end);
+
if (':' == *end || '\0' == *end) {
parg = end + (0 != *end);
end = strpbrk (parg, ":,");
@@ -299,6 +301,8 @@
break;
}
+ RW_ASSERT (0 != end);
+
if (':' == *end || '\0' == *end) {
parg = end + ('\0' != *end);
end = strpbrk (parg, ":,");
@@ -317,6 +321,8 @@
break;
}
+ RW_ASSERT (0 != end);
+
if (':' == *end || '\0' == *end) {
parg = end + (0 != *end);
end = strpbrk (parg, ":,");
Modified: stdcxx/branches/4.3.x/tests/strings/21.cwctype.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/tests/strings/21.cwctype.cpp?rev=660567&r1=660566&r2=660567&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/tests/strings/21.cwctype.cpp (original)
+++ stdcxx/branches/4.3.x/tests/strings/21.cwctype.cpp Tue May 27 08:50:30 2008
@@ -82,7 +82,6 @@
"iswlower",
#else
"",
-#endif
#ifdef iswprint
# undef iswprint
@@ -119,6 +118,8 @@
"",
#endif
+#endif
+
#ifdef tolower
# undef tolower
"tolower",