From eeb3156ecaef7d5b6ad6be1e57e18d1944f0ef8f Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 19 Oct 2013 10:55:39 +0000 Subject: encoding.c: defer code page table * encoding.c (rb_locale_encindex): defer initialization of win32 code page table until encoding db loaded. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43362 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ encoding.c | 8 +++++++- file.c | 4 ---- win32/file.c | 2 +- 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 + + * 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 * 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); -- cgit v1.2.3