projects
/
ruby-eet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Tweaked Stream#serialize to be more GC-friendly.
[ruby-eet.git]
/
ext
/
ext.c
diff --git
a/ext/ext.c
b/ext/ext.c
index e36442f9501e5025132db4e71bf8a282017773f5..a9f14db9fbc4fd279443949a7cc52d045cdd0c8c 100644
(file)
--- a/
ext/ext.c
+++ b/
ext/ext.c
@@
-1,5
+1,5
@@
/*
/*
- * $Id: ext.c 6
3 2005-06-09 17:47:46
Z tilman $
+ * $Id: ext.c 6
4 2005-06-27 19:22:58
Z tilman $
*
* Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
*
*
* Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
*
@@
-444,11
+444,11
@@
stream_serialize (VALUE self)
struct RArray *stream;
long i;
struct RArray *stream;
long i;
- ret = rb_str_new2 ("");
-
stream = RARRAY (self);
if (!stream->len)
stream = RARRAY (self);
if (!stream->len)
- return ret;
+ return rb_str_new2 ("");
+
+ ret = rb_ary_new ();
for (i = 0; i < stream->len; i++) {
VALUE str;
for (i = 0; i < stream->len; i++) {
VALUE str;
@@
-458,10
+458,10
@@
stream_serialize (VALUE self)
str = rb_funcall (stream->ptr[i], id_serialize, 0, NULL);
str = rb_funcall (stream->ptr[i], id_serialize, 0, NULL);
- rb_
str_append
(ret, str);
+ rb_
ary_push
(ret, str);
}
}
- return r
et
;
+ return r
b_ary_join (ret, Qnil)
;
}
static VALUE
}
static VALUE