Update to Ruby 1.8.2 base and thses changes:
o Set RUBY_HAS_ARCHLIB=yes for Ruby packages including archtecture depending extention library in order to depend more specific Ruby. o Apply some bug fixes. * ext/zlib/zlib.c (zstream_end): should return value. * ext/zlib/zlib.c (rb_deflate_s_deflate, rb_inflate_s_inflate): ensure freeing internal zstreams. fixed: [ruby-dev:25309] * ext/zlib/zlib.c (rb_deflate_init_copy): replace rb_deflate_clone.
This commit is contained in:
parent
e794da07d3
commit
93cc3fc203
3 changed files with 173 additions and 2 deletions
|
@ -1,4 +1,4 @@
|
|||
# $NetBSD: Makefile,v 1.4 2004/11/30 17:03:15 taca Exp $
|
||||
# $NetBSD: Makefile,v 1.5 2005/01/23 17:34:55 taca Exp $
|
||||
# FreeBSD: ports/archivers/ruby-zlib/Makefile,v 1.7 2000/09/26 22:01:12 knu Exp
|
||||
|
||||
DISTNAME= ${RUBY_DISTNAME}
|
||||
|
@ -10,10 +10,10 @@ MAINTAINER= taca@NetBSD.org
|
|||
HOMEPAGE= ${RUBY_HOMEPAGE}
|
||||
COMMENT= Zlib library for Ruby
|
||||
|
||||
RUBY_HAS_ARCHLIB= yes
|
||||
RUBY_VERSION_SUPPORTED= 18
|
||||
USE_BUILDLINK3= yes
|
||||
USE_RUBY_EXTCONF= yes
|
||||
DISTINFO_FILE= ${RUBY_DISTINFO_FILE}
|
||||
EXTRACT_ELEMENTS= ${RUBY_DISTNAME}/ext/zlib
|
||||
WRKSRC= ${RUBY_WRKSRC}/ext/zlib
|
||||
|
||||
|
|
5
devel/ruby-zlib/distinfo
Normal file
5
devel/ruby-zlib/distinfo
Normal file
|
@ -0,0 +1,5 @@
|
|||
$NetBSD: distinfo,v 1.3 2005/01/23 17:34:55 taca Exp $
|
||||
|
||||
SHA1 (ruby/ruby-1.8.2.tar.gz) = 409a917d3a0aba41f45bd053b767c85b2bc35ffa
|
||||
Size (ruby/ruby-1.8.2.tar.gz) = 3627349 bytes
|
||||
SHA1 (patch-aa) = acb62c1fdeec74fa0c1b7fe55067f780ce52fd57
|
166
devel/ruby-zlib/patches/patch-aa
Normal file
166
devel/ruby-zlib/patches/patch-aa
Normal file
|
@ -0,0 +1,166 @@
|
|||
$NetBSD: patch-aa,v 1.1 2005/01/23 17:34:55 taca Exp $
|
||||
|
||||
--- ext/zlib/zlib.c.orig 2004-12-18 16:37:01.000000000 +0900
|
||||
+++ ext/zlib/zlib.c
|
||||
@@ -55,7 +55,7 @@ static void zstream_reset_input _((struc
|
||||
static void zstream_passthrough_input _((struct zstream*));
|
||||
static VALUE zstream_detach_input _((struct zstream*));
|
||||
static void zstream_reset _((struct zstream*));
|
||||
-static void zstream_end _((struct zstream*));
|
||||
+static VALUE zstream_end _((struct zstream*));
|
||||
static void zstream_run _((struct zstream*, Bytef*, uInt, int));
|
||||
static VALUE zstream_sync _((struct zstream*, Bytef*, uInt));
|
||||
static void zstream_mark _((struct zstream*));
|
||||
@@ -80,7 +80,8 @@ static VALUE rb_zstream_closed_p _((VALU
|
||||
|
||||
static VALUE rb_deflate_s_allocate _((VALUE));
|
||||
static VALUE rb_deflate_initialize _((int, VALUE*, VALUE));
|
||||
-static VALUE rb_deflate_clone _((VALUE));
|
||||
+static VALUE rb_deflate_init_copy _((VALUE, VALUE));
|
||||
+static VALUE deflate_run _((VALUE));
|
||||
static VALUE rb_deflate_s_deflate _((int, VALUE*, VALUE));
|
||||
static void do_deflate _((struct zstream*, VALUE, int));
|
||||
static VALUE rb_deflate_deflate _((int, VALUE*, VALUE));
|
||||
@@ -89,6 +90,7 @@ static VALUE rb_deflate_flush _((int, VA
|
||||
static VALUE rb_deflate_params _((VALUE, VALUE, VALUE));
|
||||
static VALUE rb_deflate_set_dictionary _((VALUE, VALUE));
|
||||
|
||||
+static VALUE inflate_run _((VALUE));
|
||||
static VALUE rb_inflate_s_allocate _((VALUE));
|
||||
static VALUE rb_inflate_initialize _((int, VALUE*, VALUE));
|
||||
static VALUE rb_inflate_s_inflate _((VALUE, VALUE));
|
||||
@@ -667,7 +669,7 @@ zstream_reset(z)
|
||||
zstream_reset_input(z);
|
||||
}
|
||||
|
||||
-static void
|
||||
+static VALUE
|
||||
zstream_end(z)
|
||||
struct zstream *z;
|
||||
{
|
||||
@@ -692,6 +694,7 @@ zstream_end(z)
|
||||
raise_zlib_error(err, z->stream.msg);
|
||||
}
|
||||
z->flags = 0;
|
||||
+ return Qnil;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1152,26 +1155,31 @@ rb_deflate_initialize(argc, argv, obj)
|
||||
* Duplicates the deflate stream.
|
||||
*/
|
||||
static VALUE
|
||||
-rb_deflate_clone(obj)
|
||||
- VALUE obj;
|
||||
+rb_deflate_init_copy(self, orig)
|
||||
+ VALUE self, orig;
|
||||
{
|
||||
- struct zstream *z = get_zstream(obj);
|
||||
- struct zstream *z2;
|
||||
- VALUE clone;
|
||||
+ struct zstream *z1 = get_zstream(self);
|
||||
+ struct zstream *z2 = get_zstream(orig);
|
||||
int err;
|
||||
|
||||
- clone = zstream_deflate_new(rb_class_of(obj));
|
||||
- Data_Get_Struct(clone, struct zstream, z2);
|
||||
-
|
||||
- err = deflateCopy(&z2->stream, &z->stream);
|
||||
+ err = deflateCopy(&z1->stream, &z2->stream);
|
||||
if (err != Z_OK) {
|
||||
raise_zlib_error(err, 0);
|
||||
}
|
||||
+ z1->flags = z2->flags;
|
||||
|
||||
- z2->flags = z->flags;
|
||||
- CLONESETUP(clone, obj);
|
||||
- OBJ_INFECT(clone, obj);
|
||||
- return clone;
|
||||
+ return self;
|
||||
+}
|
||||
+
|
||||
+static VALUE
|
||||
+deflate_run(args)
|
||||
+ VALUE args;
|
||||
+{
|
||||
+ struct zstream *z = (struct zstream *)((VALUE *)args)[0];
|
||||
+ VALUE src = ((VALUE *)args)[1];
|
||||
+
|
||||
+ zstream_run(z, RSTRING(src)->ptr, RSTRING(src)->len, Z_FINISH);
|
||||
+ return zstream_detach_buffer(z);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1201,7 +1209,7 @@ rb_deflate_s_deflate(argc, argv, klass)
|
||||
VALUE klass;
|
||||
{
|
||||
struct zstream z;
|
||||
- VALUE src, level, dst;
|
||||
+ VALUE src, level, dst, args[2];
|
||||
int err, lev;
|
||||
|
||||
rb_scan_args(argc, argv, "11", &src, &level);
|
||||
@@ -1215,9 +1223,9 @@ rb_deflate_s_deflate(argc, argv, klass)
|
||||
}
|
||||
ZSTREAM_READY(&z);
|
||||
|
||||
- zstream_run(&z, RSTRING(src)->ptr, RSTRING(src)->len, Z_FINISH);
|
||||
- dst = zstream_detach_buffer(&z);
|
||||
- zstream_end(&z);
|
||||
+ args[0] = (VALUE)&z;
|
||||
+ args[1] = src;
|
||||
+ dst = rb_ensure(deflate_run, (VALUE)args, zstream_end, (VALUE)&z);
|
||||
|
||||
OBJ_INFECT(dst, src);
|
||||
return dst;
|
||||
@@ -1239,6 +1247,18 @@ do_deflate(z, src, flush)
|
||||
}
|
||||
}
|
||||
|
||||
+static VALUE
|
||||
+inflate_run(args)
|
||||
+ VALUE args;
|
||||
+{
|
||||
+ struct zstream *z = (struct zstream *)((VALUE *)args)[0];
|
||||
+ VALUE src = ((VALUE *)args)[1];
|
||||
+
|
||||
+ zstream_run(z, RSTRING(src)->ptr, RSTRING(src)->len, Z_SYNC_FLUSH);
|
||||
+ zstream_run(z, "", 0, Z_FINISH); /* for checking errors */
|
||||
+ return zstream_detach_buffer(z);
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* call-seq: deflate(string[, flush])
|
||||
*
|
||||
@@ -1452,7 +1472,7 @@ rb_inflate_s_inflate(obj, src)
|
||||
VALUE obj, src;
|
||||
{
|
||||
struct zstream z;
|
||||
- VALUE dst;
|
||||
+ VALUE dst, args[2];
|
||||
int err;
|
||||
|
||||
StringValue(src);
|
||||
@@ -1463,10 +1483,9 @@ rb_inflate_s_inflate(obj, src)
|
||||
}
|
||||
ZSTREAM_READY(&z);
|
||||
|
||||
- zstream_run(&z, RSTRING(src)->ptr, RSTRING(src)->len, Z_SYNC_FLUSH);
|
||||
- zstream_run(&z, "", 0, Z_FINISH); /* for checking errors */
|
||||
- dst = zstream_detach_buffer(&z);
|
||||
- zstream_end(&z);
|
||||
+ args[0] = (VALUE)&z;
|
||||
+ args[1] = src;
|
||||
+ dst = rb_ensure(inflate_run, (VALUE)args, zstream_end, (VALUE)&z);
|
||||
|
||||
OBJ_INFECT(dst, src);
|
||||
return dst;
|
||||
@@ -3333,7 +3352,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, "clone", rb_deflate_clone, 0);
|
||||
+ rb_define_method(cDeflate, "initialize_copy", rb_deflate_init_copy, 0);
|
||||
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);
|
Loading…
Reference in a new issue