[#4745] Win32: Ruby & APR; build problems for Ruby Subversion SWIG bindings — Erik Huelsmann <ehuels@...>

Having taken upon me the task to provide a Windows build for

24 messages 2005/04/20
[#4746] Re: Win32: Ruby & APR; build problems for Ruby Subversion SWIG bindings — Austin Ziegler <halostatue@...> 2005/04/20

On 4/20/05, Erik Huelsmann <ehuels@gmail.com> wrote:

[#4747] Re: Win32: Ruby & APR; build problems for Ruby Subversion SWIG bindings — Erik Huelsmann <ehuels@...> 2005/04/20

Hi Austin,

[#4762] Re: Win32: Ruby & APR; build problems for Ruby Subversion SWIG bindings — nobu.nokada@... 2005/04/24

Hi,

[#4783] Re: Win32: Ruby & APR; build problems for Ruby Subversion SWIG bindings — Erik Huelsmann <ehuels@...> 2005/04/25

On 4/24/05, nobu.nokada@softhome.net <nobu.nokada@softhome.net> wrote:

[#4787] Re: Win32: Ruby & APR; build problems for Ruby Subversion SWIG bindings — nobu.nokada@... 2005/04/25

Hi,

[#4794] Re: Win32: Ruby & APR; build problems for Ruby Subversion SWIG bindings — Erik Huelsmann <ehuels@...> 2005/04/25

> > > Ruby is just using AC_TYPE_UID_T. So, using typedef for them,

[#4751] Illegal regexp causes segfault — Andrew Walrond <andrew@...>

irb(main):058:0> a = /\[([^]]*)\]/

13 messages 2005/04/22

Re: Segfault in zlib?

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2005-04-18 03:26:14 UTC
List: ruby-core #4734
>Yes it does... thank you for your help.

OK, this is ext/zlib's GC related bug.

zstream_run:

    z->stream.next_in = RSTRING(z->input)->ptr; /* extract bare pointer */

    .....

    zstream_reset_input(z); /* actually does z->input = Qnil. reachable reference is gone. */
    if (z->stream.avail_in > 0) {
	zstream_append_input(z, z->stream.next_in, z->stream.avail_in);
    }


static void
zstream_append_input(z, src, len)
    struct zstream *z;
    const char *src;
    unsigned int len;
{
    if (len <= 0) return;

    if (NIL_P(z->input)) {
	z->input = rb_str_buf_new(len); /* if GC happen, string object is freed, and
                                           src (== z->stream.next_in) becomes dangling pointer */
	rb_str_buf_cat(z->input, src, len); /* SEGV */
	RBASIC(z->input)->klass = 0;
    }
    else {
	rb_str_buf_cat(z->input, src, len); /* same here */
    }
}


>It would be good if this was merged before 1.8.3.

I've commited. Thank you.

In This Thread