--
-$Id: ChangeLog 63 2005-06-09 17:47:46Z tilman $
+$Id: ChangeLog 64 2005-06-27 19:22:58Z tilman $
++
+2005-06-27 Tilman Sauerbeck (tilman at code-monkey de)
+ * ext/ext.c: Tweaked Stream#serialize to be more GC-friendly
+
2005-06-09 Tilman Sauerbeck (tilman at code-monkey de)
* ext/ext.c: Object#to_eet: Don't put the final chunk in a stream
again, it's not needed
/*
- * $Id: ext.c 63 2005-06-09 17:47:46Z tilman $
+ * $Id: ext.c 64 2005-06-27 19:22:58Z tilman $
*
* Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
*
struct RArray *stream;
long i;
- ret = rb_str_new2 ("");
-
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;
str = rb_funcall (stream->ptr[i], id_serialize, 0, NULL);
- rb_str_append (ret, str);
+ rb_ary_push (ret, str);
}
- return ret;
+ return rb_ary_join (ret, Qnil);
}
static VALUE