Re: Segfault in ruby tests
From: Joe Swatosh <joe.swatosh_at_gmail.com>
Date: Wed, 18 Feb 2009 13:39:50 -0800
On Wed, Feb 18, 2009 at 12:41 PM, Joe Swatosh <joe.swatosh_at_gmail.com> wrote:
Delete bad ideas 2 and 3....
>>
Hyrum,
This passes locally, but of course it was passing locally without it.
-- Joe [[[ Fix failing Ruby bindings test in the spirit of the fix for Python in r21423: "Fix segfault in Python tests by deleting the broken argout typemap for the 'result_digest' parameter in svn_txdelta_apply. Instead, ignore the parameter altogether." * subversion/bindings/swig/include/svn_types.swg (result_digest): Remove typemap for Ruby. Instead, ignore the parameter. * subversion/bindings/swig/ruby/svn/delta.rb (Svn::Delta.apply): Don't expect a digest to be returned by Svn::Delta.txdelta_apply_wrapper and don't return it. * subversion/bindings/swig/ruby/test/test_delta.rb (SvnDeltaTest#test_apply): Don't expect a digest returned with the handler from Svn::Delta.apply. ]]] Index: subversion/bindings/swig/ruby/test/test_delta.rb =================================================================== --- subversion/bindings/swig/ruby/test/test_delta.rb (revision 35962) +++ subversion/bindings/swig/ruby/test/test_delta.rb (working copy) @@ -125,17 +125,17 @@ apply_source = StringIO.new(source_text) apply_result = StringIO.new("") - handler, digest = Svn::Delta.apply(apply_source, apply_result) + handler = Svn::Delta.apply(apply_source, apply_result) handler.send(stream) apply_result.rewind assert_equal(target_text, apply_result.read) - handler, digest = Svn::Delta.apply(apply_source, apply_result) + handler = Svn::Delta.apply(apply_source, apply_result) handler.send(target_text) apply_result.rewind assert_equal(target_text * 2, apply_result.read) - handler, digest = Svn::Delta.apply(apply_source, apply_result) + handler = Svn::Delta.apply(apply_source, apply_result) handler.send(StringIO.new(target_text)) apply_result.rewind assert_equal(target_text * 3, apply_result.read) Index: subversion/bindings/swig/ruby/svn/delta.rb =================================================================== --- subversion/bindings/swig/ruby/svn/delta.rb (revision 35962) +++ subversion/bindings/swig/ruby/svn/delta.rb (working copy) @@ -52,9 +52,9 @@ def apply(source, target, error_info=nil) result = Delta.txdelta_apply_wrapper(source, target, error_info) - digest, handler, handler_baton = result + handler, handler_baton = result handler.baton = handler_baton - [handler, digest] + handler end def parse_svndiff(error_on_early_close=true, &handler) Index: subversion/bindings/swig/include/svn_types.swg =================================================================== --- subversion/bindings/swig/include/svn_types.swg (revision 35962) +++ subversion/bindings/swig/include/svn_types.swg (working copy) @@ -1060,11 +1060,12 @@ %apply unsigned char digest[ANY] { unsigned char *digest }; #ifdef SWIGRUBY -/* FIXME: This typemap doesn't work, because svn_txdelta_apply saves - * away this local pointer to be used later. When the pointer - * is finally used, we get memory corruption / segfaults. +/* + * Skip the md5sum + * FIXME: Wrap the md5sum */ -%apply unsigned char digest[ANY] { unsigned char *result_digest }; +%typemap(in, numinputs=0) unsigned char *result_digest + ($*1_type temp[APR_MD5_DIGESTSIZE]) "$1 = NULL;"; #endif #ifdef SWIGPYTHON ------------------------------------------------------ http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1188225
|
This is an archived mail posted to the Subversion Dev mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.