To: vim_dev@googlegroups.com
Subject: Patch 7.3.058
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///