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

Raspunde prin e-mail lui