aboutsummaryrefslogtreecommitdiffstats
path: root/lib/iconv.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/iconv.c')
-rw-r--r--lib/iconv.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/iconv.c b/lib/iconv.c
index 5ea9499..977e771 100644
--- a/lib/iconv.c
+++ b/lib/iconv.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 1999-2008 Free Software Foundation, Inc.
+ * Copyright (C) 1999-2008, 2011 Free Software Foundation, Inc.
* This file is part of the GNU LIBICONV Library.
*
* The GNU LIBICONV Library is free software; you can redistribute it
@@ -549,8 +549,22 @@ const char * iconv_canonicalize (const char * name)
}
if (ap->encoding_index == ei_local_wchar_t) {
/* On systems which define __STDC_ISO_10646__, wchar_t is Unicode.
- This is also the case on native Woe32 systems. */
-#if __STDC_ISO_10646__ || ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
+ This is also the case on native Woe32 systems, where we know that it
+ is UTF-16. */
+#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
+ if (sizeof(wchar_t) == 4) {
+ index = ei_ucs4internal;
+ break;
+ }
+ if (sizeof(wchar_t) == 2) {
+# if WORDS_LITTLEENDIAN
+ index = ei_utf16le;
+# else
+ index = ei_utf16be;
+# endif
+ break;
+ }
+#elif __STDC_ISO_10646__
if (sizeof(wchar_t) == 4) {
index = ei_ucs4internal;
break;