1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
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 ///
|