aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--encoding.c8
-rw-r--r--file.c4
-rw-r--r--win32/file.c2
4 files changed, 13 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 936e2f790b..56cd3025db 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Oct 19 19:55:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_locale_encindex): defer initialization of win32 code
+ page table until encoding db loaded.
+
Sat Oct 19 08:25:05 2013 Koichi Sasada <ko1@atdot.net>
* gc.c: fix rb_objspace_t.
diff --git a/encoding.c b/encoding.c
index 4b5b446b6c..4793e67375 100644
--- a/encoding.c
+++ b/encoding.c
@@ -1272,7 +1272,13 @@ rb_locale_encindex(void)
else if ((idx = rb_enc_find_index(StringValueCStr(charmap))) < 0)
idx = ENCINDEX_ASCII;
- if (rb_enc_registered("locale") < 0) enc_alias_internal("locale", idx);
+ if (rb_enc_registered("locale") < 0) {
+# if defined _WIN32
+ void Init_w32_codepage(void);
+ Init_w32_codepage();
+# endif
+ enc_alias_internal("locale", idx);
+ }
return idx;
}
diff --git a/file.c b/file.c
index 25c2e9a374..5feadb6578 100644
--- a/file.c
+++ b/file.c
@@ -5813,8 +5813,4 @@ Init_File(void)
rb_define_method(rb_cStat, "setuid?", rb_stat_suid, 0);
rb_define_method(rb_cStat, "setgid?", rb_stat_sgid, 0);
rb_define_method(rb_cStat, "sticky?", rb_stat_sticky, 0);
-
-#ifdef _WIN32
- rb_w32_init_file();
-#endif
}
diff --git a/win32/file.c b/win32/file.c
index 444b628e8b..afe1163098 100644
--- a/win32/file.c
+++ b/win32/file.c
@@ -686,7 +686,7 @@ rb_file_load_ok(const char *path)
}
void
-rb_w32_init_file(void)
+Init_w32_codepage(void)
{
rb_code_page = st_init_numtable();
rb_enc_foreach_name(code_page_i, (st_data_t)rb_code_page);