summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--dln.c10
2 files changed, 11 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index bf917cb6a3..e6b644f79a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Oct 16 08:39:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_strerror): get English message first, instead of
+ system default. see [ruby-dev:42358].
+
Sat Oct 16 00:08:00 2010 Koichi Sasada <ko1@atdot.net>
* hash.c (rb_hash_aref): skip calling "default" method
diff --git a/dln.c b/dln.c
index bb41f66c56..4e7addd7cb 100644
--- a/dln.c
+++ b/dln.c
@@ -1127,10 +1127,12 @@ dln_strerror(char *message, size_t size)
char *p = message;
size_t len = snprintf(message, size, "%d: ", error);
- FormatMessage(
- FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- message + len, size - len, NULL);
+#define format_message(sublang) FormatMessage(\
+ FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, \
+ NULL, error, MAKELANGID(LANG_NEUTRAL, sublang), \
+ message + len, size - len, NULL)
+ if (format_message(SUBLANG_ENGLISH_US) == 0)
+ format_message(SUBLANG_DEFAULT);
for (p = message + len; *p; p++) {
if (*p == '\n' || *p == '\r')
*p = ' ';