Bram.
I got a report of patch 7.3.058 from someone . it seems that
'Init_prelude' is internal function on some distribution. (ex: MacOSX)
The compiling fail on the environment. I took a look at finding the
reason of calling 'Init_prelude'. But I don't get it. It seems that
'Init_prelude' is not needed for loading 'gems'.
I removed Init_prelude and tested some 'Gems'. But I didn't get any
problems.
And also, 'Init_prelude' is empty function at current source codes of
ruby .
Sorry about I wrote patch 7.3.058. Please check following fix and
include.
- Yasuhiro Matsumoto
diff -r 840c3cadb842 src/if_ruby.c
--- a/src/if_ruby.c Tue Nov 16 20:34:40 2010 +0100
+++ b/src/if_ruby.c Mon Nov 22 12:38:48 2010 +0900
@@ -231,7 +231,6 @@
# 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
@@ -321,7 +320,6 @@
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*);
@@ -433,7 +431,6 @@
{"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
@@ -675,7 +672,6 @@
/* 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();
On Nov 16, 10:46 pm, Bram Moolenaar <[email protected]> wrote:
> 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 -- [email protected] --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 ///
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php