2008-04-21  Martin Sebor  <sebor@roguewave.com>

	* tags/4.2.1-rc-2: Tagged branches/4.2.x at rev 648752.


git-svn-id: https://svn.apache.org/repos/asf/stdcxx/tags/4.2.1-rc-2@650305 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/etc/config/windows/configure.wsf b/etc/config/windows/configure.wsf
index 0409928..6d091fc 100644
--- a/etc/config/windows/configure.wsf
+++ b/etc/config/windows/configure.wsf
@@ -1015,7 +1015,7 @@
 
     command += joinArray(srcs.split(" "), "");
 
-    command += " " + LIBS + " /Fe\"" + stageDir + "\\" + outName + "\"" +
+    command += " /Fe\"" + stageDir + "\\" + outName + "\"" +
                " /link " + LDFLAGS;
 
     var message = "Linking with command \"" + command + "\"";
@@ -1042,7 +1042,7 @@
         var dllname = "\"" + stageDir + "\\" + basename(outFile, "\\.lib") + ".dll\"";
         var command = LD + " ";
         command += joinArray(objNames.split(" "), "");
-        command += " " + LIBS + " /Fe" + dllname + " /link /DLL " + LDFLAGS +
+        command += " /Fe" + dllname + " /link /DLL " + LDFLAGS +
                    " /IMPLIB:" + libname;
         var message = "Making library with command \"" + command + "\"";
         logLine(message);
diff --git a/include/loc/_ctype.h b/include/loc/_ctype.h
index df1bcdf..44245b4 100644
--- a/include/loc/_ctype.h
+++ b/include/loc/_ctype.h
@@ -541,20 +541,21 @@
 inline char
 ctype<wchar_t>::narrow (char_type __c, char __dfault) const
 {
-    const _RWSTD_SIZE_T __inx = _RWSTD_STATIC_CAST (_RWSTD_UWCHAR_INT_T, __c);
-
     // optimize away all but the first call to the virtual do_widen()
-    if (   __inx < sizeof _C_narrow_tab / sizeof *_C_narrow_tab
-        && _C_narrow_tab [__inx])
-        return _C_narrow_tab [__inx];
+    if (   0 <= __c
+        && __c < sizeof _C_narrow_tab / sizeof *_C_narrow_tab
+        && _C_narrow_tab [__c])
+        return _C_narrow_tab [__c];
 
     // template argument provided to work around an HP aCC bug (PR #27087)
     ctype<wchar_t>* const __self = _RWSTD_CONST_CAST (ctype<wchar_t>*, this);
 
     const char __ch = do_narrow (__c, __dfault);
 
-    if (__inx < sizeof _C_narrow_tab / sizeof *_C_narrow_tab && __ch != __dfault)
-        __self->_C_narrow_tab [__inx] = __ch;
+    if (   0 <= __c
+        && __c < sizeof _C_narrow_tab / sizeof *_C_narrow_tab
+        && __ch != __dfault)
+        __self->_C_narrow_tab [__c] = __ch;
 
     return __ch;
 }
diff --git a/include/rw/_config.h b/include/rw/_config.h
index 549f8e2..ecb79a5 100644
--- a/include/rw/_config.h
+++ b/include/rw/_config.h
@@ -37,7 +37,7 @@
 
 /*** library version numbers and ids **************************************/
 
-#define _RWSTD_VER 0x04020100
+#define _RWSTD_VER 0x04020001
 //                    | | | |
 //                   MMmmuupp
 //                    | | | |
diff --git a/include/rw/_defs.h b/include/rw/_defs.h
index 9d5d0e6..aeb7599 100644
--- a/include/rw/_defs.h
+++ b/include/rw/_defs.h
@@ -1269,20 +1269,6 @@
 #endif   // _RWSTD_SSIZE_T
 
 
-// _RWSTD_UWCHAR_INT_T is "unsigned wchar_t"
-#ifndef _RWSTD_UWCHAR_INT_T
-#  if _RWSTD_CHAR_SIZE == _RWSTD_WCHAR_SIZE
-#    define _RWSTD_UWCHAR_INT_T unsigned char
-#  elif _RWSTD_SHRT_SIZE == _RWSTD_WCHAR_SIZE
-#    define _RWSTD_UWCHAR_INT_T unsigned short
-#  elif _RWSTD_INT_SIZE == _RWSTD_WCHAR_SIZE
-#    define _RWSTD_UWCHAR_INT_T unsigned int
-#  else
-#    define _RWSTD_UWCHAR_INT_T _RWSTD_SIZE_T
-#  endif
-#endif   // _RWSTD_UWCHAR_INT_T
-
-
 #if defined(SNI)
 #  define _RWSTD_USING_SNI(name) _USING(__SNI::name)
 #  if defined(_RWSTD_STRICT_ANSI)