Package: subversion Version: 1.4.0 Severity: serious Tags: patch Justification: no longer builds from source
Hi, I looked at the failing self tests. The first one is a bug in the created wrapper. The basic problem is that in svn_delta.c:_wrap_svn_txdelta_apply_wrapper() the value of temp3 is not modified by svn_txdelta_apply_wrapper(), so the return is basically random. In this case the stack is clear and svn_md5_digest_to_cstring() returns a NULL, which rb_str_new2() doesn't like. The easiest fix is to change the typemap in svn_types.swg so it can deal with the NULL pointer. (BTW I tried returning Qnil here, but that doesn't work well output_helper.) The other two failures are a bug in the test itself, which simply take a bit too much time on m68k, so I modified the test a little to accept a small delay. bye, Roman -- System Information: Debian Release: testing/unstable APT prefers unstable APT policy: (500, 'unstable') Architecture: m68k Shell: /bin/sh linked to /bin/dash Kernel: Linux 2.4.30 Locale: LANG=de_DE.UTF-8, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
diff -ur subversion-1.4.0.org/subversion/bindings/swig/include/svn_types.swg subversion-1.4.0/subversion/bindings/swig/include/svn_types.swg --- subversion-1.4.0.org/subversion/bindings/swig/include/svn_types.swg 2006-04-20 04:47:39.000000000 +0200 +++ subversion-1.4.0/subversion/bindings/swig/include/svn_types.swg 2006-09-15 02:41:36.000000000 +0200 @@ -542,7 +542,7 @@ %typemap(ruby, argout, fragment="output_helper") unsigned char digest[ANY] { char *digest_string = (char *)svn_md5_digest_to_cstring($1, _global_pool); - $result = output_helper($result, rb_str_new2(digest_string)); + $result = output_helper($result, rb_str_new2(digest_string ? digest_string : "")); } @@ -554,7 +554,7 @@ %typemap(ruby, argout, fragment="output_helper") unsigned char **digest { char *digest_string = (char *)svn_md5_digest_to_cstring(*$1, _global_pool); - $result = output_helper($result, rb_str_new2(digest_string)); + $result = output_helper($result, rb_str_new2(digest_string ? digest_string : "")); } /* svn_md5_* functions takes const ones as input */ diff -ur subversion-1.4.0.org/subversion/bindings/swig/ruby/test/test_ra.rb subversion-1.4.0/subversion/bindings/swig/ruby/test/test_ra.rb --- subversion-1.4.0.org/subversion/bindings/swig/ruby/test/test_ra.rb 2006-04-17 16:51:04.000000000 +0200 +++ subversion-1.4.0/subversion/bindings/swig/ruby/test/test_ra.rb 2006-09-15 03:06:43.000000000 +0200 @@ -212,10 +212,10 @@ session = Svn::Ra::Session.open(@repos_uri, config, callbacks) result = nil - expect = [1, Time.now.to_s, @author] + expect = [1, Time.now, @author] gc_disable do editor, baton = session.commit_editor(log) do |rev, date, author| - result = [rev, date.to_s, author] + result = [rev, date, author] end editor.baton = baton @@ -225,6 +225,7 @@ GC.start editor.close_edit end + expect[1] = result[1] if result[1] >= expect[1] && result[1] < expect[1] + 10 assert_equal(expect, result) end end @@ -238,10 +239,10 @@ session = Svn::Ra::Session.open(@repos_uri, config, callbacks) result = nil - expect = [1, Time.now.to_s, @author] + expect = [1, Time.now, @author] gc_disable do editor = session.commit_editor2(log) do |info| - result = [info.revision, info.date.to_s, info.author] + result = [info.revision, info.date, info.author] end root = editor.open_root(-1) @@ -250,6 +251,7 @@ GC.start editor.close_edit end + expect[1] = result[1] if result[1] >= expect[1] && result[1] < expect[1] + 10 assert_equal(expect, result) end end