diff options
-rw-r--r-- | Jamrules.jam | 5 | ||||
-rw-r--r-- | tests/test_unicode.cpp | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/Jamrules.jam b/Jamrules.jam index 307e192..ed9c32c 100644 --- a/Jamrules.jam +++ b/Jamrules.jam @@ -64,6 +64,11 @@ else if ( $(toolset:I=^msvc) ) {
CCFLAGS += /EHsc ;
}
+ else if ( $(toolset) = "msvc6" || $(toolset) = "msvc71" )
+ {
+ # No no-exception STL in MSVC6, buggy no-exception STL in MSVC71
+ CCFLAGS += /EHsc ;
+ }
else
{
CCFLAGS += /D_HAS_EXCEPTIONS=0 ;
diff --git a/tests/test_unicode.cpp b/tests/test_unicode.cpp index ce48edb..61e23aa 100644 --- a/tests/test_unicode.cpp +++ b/tests/test_unicode.cpp @@ -2,6 +2,10 @@ // letters taken from http://www.utf8-chartable.de/
+#ifdef __DMC__
+#define U_LITERALS // DMC does not understand \x01234 (it parses first three digits), but understands \u01234
+#endif
+
inline wchar_t wchar_cast(unsigned int value)
{
return static_cast<wchar_t>(value); // to avoid C4310 on MSVC
@@ -11,8 +15,12 @@ inline wchar_t wchar_cast(unsigned int value) TEST(as_utf16)
{
// valid 1-byte, 2-byte and 3-byte inputs
+#ifdef U_LITERALS
+ CHECK(as_utf16("?\xd0\x80\xe2\x80\xbd") == L"?\u0400\u203D");
+#else
CHECK(as_utf16("?\xd0\x80\xe2\x80\xbd") == L"?\x0400\x203D");
-
+#endif
+
// invalid 1-byte input
CHECK(as_utf16("\xb0") == L" ");
@@ -28,7 +36,11 @@ TEST(as_utf16) TEST(as_utf8)
{
// valid 1-byte, 2-byte and 3-byte outputs
+#ifdef U_LITERALS
+ CHECK(as_utf8(L"?\u0400\u203D") == "?\xd0\x80\xe2\x80\xbd");
+#else
CHECK(as_utf8(L"?\x0400\x203D") == "?\xd0\x80\xe2\x80\xbd");
+#endif
// valid 4-byte output
#if 0
|