--pgp-sign-Multipart_Sat_Jun__7_22:19:50_2008-1 Content-Type: text/plain; charset=ISO-2022-JP At Sat, 7 Jun 2008 21:01:00 +0900, Kouya wrote: > ¤¤¤ÞZlib::Deflate¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë¤òÊԤƤ¤¤ë¤Î¤Ç¤¹¤¬¡¢ > clone¤ò¸Æ¤Ó ¹¤È¥¨¥é¡¼¤¬¤Ç¤Þ¤¹¡¨Â ãìïî¤Â¤ò¸Æ¤Ó ¹Á°¤Ë¤Ê¤Ë¤«¤¹¤ëɬÍפ¬¤¢¤ë¤Î¤Ç¤·¤ç¤¦¤«¡¨Â ¤è¤í¤·¤¯¤ª´ê¤¤¤·¤Þ¤¹¡£ > > #¥µ¥ó¥×¥ë¥¹¥¯¥ê¥×¥È > require 'zlib' > > dez lib::Deflate.new > dez << "hoge" * 10 > cz ez.clone > > #¼Â¹Ô·ë²Ì > ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-darwin9.2.0] > z2.rb:7:in `initialize_copy': wrong number of arguments (1 for 0) > (ArgumentError) > from z2.rb:7:in `clone' > from z2.rb:7 > zlib(finalizer): the stream was freed prematurely. ¤³¤ì¤Çľ¤ë¤Ç¤·¤ç¤¦¤«¡£ Index: ext/zlib/zlib.c --- ext/zlib/zlib.c (revision 16873) +++ ext/zlib/zlib.c (working copy) @@ -1116,10 +1116,12 @@ rb_deflate_initialize(int argc, VALUE *a static VALUE rb_deflate_init_copy(VALUE self, VALUE orig) { - struct zstream *z1 et_zstream(self); - struct zstream *z2 et_zstream(orig); + struct zstream *z1, *z2; int err; + Data_Get_Struct(self, struct zstream, z1); + z2 et_zstream(orig); + err eflateCopy(&z1->stream, &z2->stream); if (err ! _OK) { raise_zlib_error(err, 0); @@ -3267,7 +3269,7 @@ void Init_zlib() rb_define_singleton_method(cDeflate, "deflate", rb_deflate_s_deflate, -1); rb_define_alloc_func(cDeflate, rb_deflate_s_allocate); rb_define_method(cDeflate, "initialize", rb_deflate_initialize, -1); - rb_define_method(cDeflate, "initialize_copy", rb_deflate_init_copy, 0); + rb_define_method(cDeflate, "initialize_copy", rb_deflate_init_copy, 1); rb_define_method(cDeflate, "deflate", rb_deflate_deflate, -1); rb_define_method(cDeflate, "<<", rb_deflate_addstr, 1); rb_define_method(cDeflate, "flush", rb_deflate_flush, -1); -- Akinori MUSHA / http://akinori.org/ --pgp-sign-Multipart_Sat_Jun__7_22:19:50_2008-1 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iEYEABECAAYFAkhKivYACgkQkgvvx5/Z4e4vIwCeKQXqXLvfDiBudTjqJNvz+GcO 8V0AoKjelPcEAIDTfQX6MezRfHyrbAIu yb -----END PGP SIGNATURE----- --pgp-sign-Multipart_Sat_Jun__7_22:19:50_2008-1--