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 ///