diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | encoding.c | 8 | ||||
-rw-r--r-- | file.c | 4 | ||||
-rw-r--r-- | win32/file.c | 2 |
4 files changed, 13 insertions, 6 deletions
@@ -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; } @@ -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); |