diff --git a/7.3.058 b/7.3.058 new file mode 100644 index 0000000..b1ede33 --- /dev/null +++ b/7.3.058 @@ -0,0 +1,158 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.058 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.058 +Problem: Error "code converter not found" when loading Ruby script. +Solution: Load Gem module. (Yasuhiro Matsumoto) +Files: src/if_ruby.c + + +*** ../vim-7.3.057/src/if_ruby.c 2010-10-27 17:40:53.000000000 +0200 +--- src/if_ruby.c 2010-11-16 14:37:48.000000000 +0100 +*************** +*** 229,234 **** +--- 229,237 ---- + # define rb_enc_find_index dll_rb_enc_find_index + # define rb_enc_find dll_rb_enc_find + # define rb_enc_str_new dll_rb_enc_str_new ++ # define rb_intern2 dll_rb_intern2 ++ # define rb_const_remove dll_rb_const_remove ++ # define Init_prelude dll_Init_prelude + # define rb_sprintf dll_rb_sprintf + # define ruby_init_stack dll_ruby_init_stack + #endif +*************** +*** 317,322 **** +--- 320,328 ---- + static int (*dll_rb_enc_find_index) (const char*); + static rb_encoding* (*dll_rb_enc_find) (const char*); + static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*); ++ static ID (*dll_rb_intern2) (const char*, long); ++ static void (*dll_Init_prelude) (void); ++ static VALUE (*dll_rb_const_remove) (VALUE, ID); + static VALUE (*dll_rb_sprintf) (const char*, ...); + static void (*ruby_init_stack)(VALUE*); + #endif +*************** +*** 425,430 **** +--- 431,439 ---- + {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index}, + {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find}, + {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new}, ++ {"rb_intern2", (RUBY_PROC*)&dll_rb_intern2}, ++ {"rb_const_remove", (RUBY_PROC*)&dll_rb_const_remove}, ++ {"Init_prelude", (RUBY_PROC*)&dll_Init_prelude}, + {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf}, + {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack}, + #endif +*************** +*** 662,667 **** +--- 671,682 ---- + ruby_io_init(); + #ifdef RUBY19_OR_LATER + rb_enc_find_index("encdb"); ++ ++ /* This avoids the error "Encoding::ConverterNotFoundError: code ++ * converter not found (UTF-16LE to ASCII-8BIT)". */ ++ rb_define_module("Gem"); ++ Init_prelude(); ++ rb_const_remove(rb_cObject, rb_intern2("TMP_RUBY_PREFIX", 15)); + #endif + ruby_vim_init(); + ruby_initialized = 1; +*************** +*** 946,958 **** + + static VALUE get_buffer_line(buf_T *buf, linenr_T n) + { +! if (n > 0 && n <= buf->b_ml.ml_line_count) +! { +! char *line = (char *)ml_get_buf(buf, n, FALSE); +! return line ? vim_str2rb_enc_str(line) : Qnil; +! } +! rb_raise(rb_eIndexError, "line number %ld out of range", (long)n); +! return Qnil; /* For stop warning */ + } + + static VALUE buffer_aref(VALUE self, VALUE num) +--- 961,969 ---- + + static VALUE get_buffer_line(buf_T *buf, linenr_T n) + { +! if (n <= 0 || n > buf->b_ml.ml_line_count) +! rb_raise(rb_eIndexError, "line number %ld out of range", (long)n); +! return vim_str2rb_enc_str((char *)ml_get_buf(buf, n, FALSE)); + } + + static VALUE buffer_aref(VALUE self, VALUE num) +*************** +*** 991,999 **** + else + { + rb_raise(rb_eIndexError, "line number %ld out of range", (long)n); +- #ifndef __GNUC__ +- return Qnil; /* For stop warning */ +- #endif + } + return str; + } +--- 1002,1007 ---- +*************** +*** 1048,1054 **** + long n = NUM2LONG(num); + aco_save_T aco; + +! if (line == NULL) { + rb_raise(rb_eIndexError, "NULL line"); + } + else if (n >= 0 && n <= buf->b_ml.ml_line_count) +--- 1056,1063 ---- + long n = NUM2LONG(num); + aco_save_T aco; + +! if (line == NULL) +! { + rb_raise(rb_eIndexError, "NULL line"); + } + else if (n >= 0 && n <= buf->b_ml.ml_line_count) +*************** +*** 1072,1078 **** + + update_curbuf(NOT_VALID); + } +! else { + rb_raise(rb_eIndexError, "line number %ld out of range", n); + } + return str; +--- 1081,1088 ---- + + update_curbuf(NOT_VALID); + } +! else +! { + rb_raise(rb_eIndexError, "line number %ld out of range", n); + } + return str; +*** ../vim-7.3.057/src/version.c 2010-11-16 14:05:48.000000000 +0100 +--- src/version.c 2010-11-16 14:44:42.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 58, + /**/ + +-- +SIGIRO -- irony detected (iron core dumped) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///