159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
# File 'ext/fast_xs/fast_xs.c', line 159
VALUE fast_xs(VALUE self)
{
long i;
struct RArray *array;
char *s, *c;
long s_len = 0;
VALUE *tmp;
array = RARRAY(rb_rescue(unpack_utf8, self, unpack_uchar, self));
tmp = array->ptr;
for (i = array->len; --i >= 0; tmp++)
s_len += escaped_len(NUM2INT(*tmp));
c = s = alloca(s_len + 1);
tmp = array->ptr;
for (i = array->len; --i >= 0; tmp++)
c += escape(c, NUM2INT(*tmp));
*c = '\0';
return rb_str_new(s, s_len);
}
|