svn commit: r1924773 - in /subversion/trunk: ./ build/generator/ subversion/bindings/swig/ subversion/bindings/swig/include/ subversion/bindings/swig/ruby/libsvn_swig_ruby/ subversion/bindings/swig/ruby/svn/ subversion/bindings/swig/ruby/test/

[email protected]
Newsgroups gmane.comp.version-control.subversion.svn
Message-ID <[email protected]>
Author: jun66j5
Date: Fri Apr  4 15:56:01 2025
New Revision: 1924773

URL: http://svn.apache.org/viewvc?rev=1924773&view=rev
Log:
swig-rb: Support ruby x64-mswin64 and building with GCC 15 which uses
-std=c23 by default.

* build/generator/gen_win_dependencies.py
  (_find_ruby):
    Adapt the match for mswin version from ruby/setup-ruby, `x.y.z+n`.

* subversion/bindings/swig/include/svn_types.swg
  (%typemap(in) const char *header_encoding):
    Use `NUM2SWIG` rather than `NUM2INT` to match the size of a pointer.

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
  (rb_set_pool_callback):
    Added in order to able to pass it to `rb_iterate` without the cast to a
    function pointer.
  (svn_swig_rb_set_baton):
    Declare it using `RB_BLOCK_CALL_FUNC_ARGLIST` for the block function.
  (rb_set_pool_for_hash_callback,
   svn_swig_rb_to_apr_array_row_prop_callback,
   svn_swig_rb_to_apr_array_prop_callback,
   r2c_hash_i,
   callback,
   callback_rescue,
   callback_handle_error):
    Change the types of the parameters in order to able to pass without the
    cast to a function pointer.
  (svn_swig_rb_set_pool,
   svn_swig_rb_set_pool_for_no_swig_type,
   svn_swig_rb_to_apr_array_row_prop,
   svn_swig_rb_to_apr_array_prop,
   r2c_hash,
   invoke_callback,
   callback_handle_error,
   invoke_callback_handle_error,
   svn_swig_rb_set_baton):
    Remove the unnecessary casts to a function pointer.

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h
  (ssize_t):
    Define `ssize_t` only if it is not defined. Also, use `apr_ssize_t` to
    define it rather than `long` in order to make compatible on both LP64 and
    LLP64 environments.
  (#pragma C4113):
    Configure C4113 as warning instead of error if SWIG is 4.0.2 early.

* subversion/bindings/swig/ruby/svn/util.rb
  (): Adapt the regular expression to x64-mswin64.
  (reset_message_directory, windows?): Ditto.

* subversion/bindings/swig/ruby/test/test_fs.rb
  (test_transaction, test_prop):
    Add sleep of 32ms if Windows because resolution of the Subversion's clock
    on Windows is 16ms.

* subversion/bindings/swig/ruby/test/test_repos.rb
  (assert_transaction):
    Ditto.

* subversion/bindings/swig/ruby/test/windows_util.rb
  (setup_svnserve):
    Fix launch of the svnserve process on Windows.
  (teardown_svnserve):
    Implement stop of the svnserve process on Windows.

* subversion/bindings/swig/svn_delta.i
  (svn_swig_rb_delta_editor_get_target_revision):
    Use `NUM2SWIG` rather than `NUM2LONG` to match the size of a pointer on
    both LP64 and LLP64 environments.

* subversion/bindings/swig/svn_wc.i
  (%typemap(argout) svn_revnum_t *target_revision):
    Use `SWIG2NUM` rather than `LONG2NUM` to match the size of a pointer on
    both LP64 and LLP64 environments.

* win-tests.py
  (Run run-test.rb):
    Pass `--collector=dir` option to `run-test.rb` to run the tests well.

Modified:
    subversion/trunk/build/generator/gen_win_dependencies.py
    subversion/trunk/subversion/bindings/swig/include/svn_types.swg
    subversion/trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
    subversion/trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h
    subversion/trunk/subversion/bindings/swig/ruby/svn/util.rb
    subversion/trunk/subversion/bindings/swig/ruby/test/test_fs.rb
    subversion/trunk/subversion/bindings/swig/ruby/test/test_repos.rb
    subversion/trunk/subversion/bindings/swig/ruby/test/windows_util.rb
    subversion/trunk/subversion/bindings/swig/svn_delta.i
    subversion/trunk/subversion/bindings/swig/svn_wc.i
    subversion/trunk/win-tests.py

Modified: subversion/trunk/build/generator/gen_win_dependencies.py
URL: http://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_win_dependencies.py?rev=1924773&r1=1924772&r2=1924773&view=diff
==============================================================================
--- subversion/trunk/build/generator/gen_win_dependencies.py (original)
+++ subversion/trunk/build/generator/gen_win_dependencies.py Fri Apr  4 15:56:01 2025
@@ -1029,7 +1029,7 @@ class GenDependenciesBase(gen_base.Gener
     else:
       defines = []
 
-    ver = ruby_version.split('.')
+    ver = ruby_version.split('+')[0].split('.')
     ver = tuple(map(int, ver))
     if ver >= (1, 8, 0):
       defines.extend(["HAVE_RB_ERRINFO"])

Modified: subversion/trunk/subversion/bindings/swig/include/svn_types.swg
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/include/svn_types.swg?rev=1924773&r1=1924772&r2=1924773&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/include/svn_types.swg (original)
+++ subversion/trunk/subversion/bindings/swig/include/svn_types.swg Fri Apr  4 15:56:01 2025
@@ -394,7 +394,7 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
 
   if (NIL_P($input)) {
   } else if (TYPE($input) == T_FIXNUM) {
-    $1 = (char *)NUM2INT($input);
+    $1 = (char *)NUM2SWIG($input);
     if (!($1 == APR_LOCALE_CHARSET || $1 == APR_DEFAULT_CHARSET)) {
       $1 = NULL;
     }

Modified: subversion/trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c?rev=1924773&r1=1924772&r2=1924773&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c (original)
+++ subversion/trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c Fri Apr  4 15:56:01 2025
@@ -696,6 +696,12 @@ rb_set_pool(VALUE self, VALUE pool)
 }
 
 static VALUE
+rb_set_pool_callback(RB_BLOCK_CALL_FUNC_ARGLIST(self, pool))
+{
+  return rb_set_pool(self, pool);
+}
+
+static VALUE
 rb_pool_new(VALUE parent)
 {
   return rb_funcall(rb_svn_core_pool(), id_new, 1, parent);
@@ -760,9 +766,10 @@ struct rb_set_pool_for_hash_arg {
 };
 
 static int
-rb_set_pool_for_hash_callback(VALUE key, VALUE value,
-                              struct rb_set_pool_for_hash_arg *arg)
+rb_set_pool_for_hash_callback(VALUE key, VALUE value, VALUE hash_arg)
 {
+  struct rb_set_pool_for_hash_arg *arg;
+  arg = (struct rb_set_pool_for_hash_arg *) hash_arg;
   if (svn_swig_rb_set_pool(value, arg->pool))
     arg->set = TRUE;
   return ST_CONTINUE;
@@ -788,7 +795,7 @@ svn_swig_rb_set_pool(VALUE target, VALUE
     struct rb_set_pool_for_hash_arg arg;
     arg.set = FALSE;
     arg.pool = pool;
-    rb_hash_foreach(target, (int(*)(ANYARGS))rb_set_pool_for_hash_callback, (VALUE)&arg);
+    rb_hash_foreach(target, rb_set_pool_for_hash_callback, (VALUE)&arg);
     return arg.set;
   } else {
     return rb_set_pool_if_swig_type_object(target, pool);
@@ -806,7 +813,7 @@ svn_swig_rb_set_pool_for_no_swig_type(VA
     target = rb_ary_new3(1, target);
   }
 
-  rb_iterate((VALUE(*)())rb_each, target, (VALUE(*)())rb_set_pool, pool);
+  rb_iterate(rb_each, target, rb_set_pool_callback, pool);
 }
 
 void
@@ -1028,9 +1035,10 @@ typedef struct prop_hash_each_arg_t {
 } prop_hash_each_arg_t;
 
 static int
-svn_swig_rb_to_apr_array_row_prop_callback(VALUE key, VALUE value,
-                                           prop_hash_each_arg_t *arg)
+svn_swig_rb_to_apr_array_row_prop_callback(VALUE key, VALUE value, VALUE
+                                           prop_arg)
 {
+  prop_hash_each_arg_t *arg = (prop_hash_each_arg_t *) prop_arg;
   svn_prop_t *prop;
 
   prop = apr_array_push(arg->array);
@@ -1071,7 +1079,7 @@ svn_swig_rb_to_apr_array_row_prop(VALUE
     arg.array = result;
     arg.pool = pool;
     rb_hash_foreach(array_or_hash,
-                    (int(*)(ANYARGS))svn_swig_rb_to_apr_array_row_prop_callback,
+                    svn_swig_rb_to_apr_array_row_prop_callback,
                     (VALUE)&arg);
     return result;
   } else {
@@ -1082,9 +1090,9 @@ svn_swig_rb_to_apr_array_row_prop(VALUE
 }
 
 static int
-svn_swig_rb_to_apr_array_prop_callback(VALUE key, VALUE value,
-                                       prop_hash_each_arg_t *arg)
+svn_swig_rb_to_apr_array_prop_callback(VALUE key, VALUE value, VALUE prop_arg)
 {
+  prop_hash_each_arg_t *arg = (prop_hash_each_arg_t *) prop_arg;
   svn_prop_t *prop;
 
   prop = apr_palloc(arg->pool, sizeof(svn_prop_t));
@@ -1127,7 +1135,7 @@ svn_swig_rb_to_apr_array_prop(VALUE arra
     arg.array = result;
     arg.pool = pool;
     rb_hash_foreach(array_or_hash,
-                    (int(*)(ANYARGS))svn_swig_rb_to_apr_array_prop_callback,
+                    svn_swig_rb_to_apr_array_prop_callback,
                     (VALUE)&arg);
     return result;
   } else {
@@ -1525,8 +1533,9 @@ svn_swig_rb_apr_revnum_key_hash_to_hash_
 
 /* Ruby Hash -> apr_hash_t */
 static int
-r2c_hash_i(VALUE key, VALUE value, hash_to_apr_hash_data_t *data)
+r2c_hash_i(VALUE key, VALUE value, VALUE data_arg)
 {
+  hash_to_apr_hash_data_t *data = (hash_to_apr_hash_data_t *) data_arg;
   if (key != Qundef) {
     void *val = data->func(value, data->ctx, data->pool);
     svn_hash_sets(data->apr_hash, apr_pstrdup(data->pool, StringValuePtr(key)),
@@ -1550,7 +1559,7 @@ r2c_hash(VALUE hash, r2c_func func, void
     data.func = func;
     data.pool = pool;
 
-    rb_hash_foreach(hash, (int(*)(ANYARGS))r2c_hash_i, (VALUE)&data);
+    rb_hash_foreach(hash, r2c_hash_i, (VALUE)&data);
 
     return apr_hash;
   }
@@ -1609,7 +1618,7 @@ typedef struct callback_handle_error_bat
 } callback_handle_error_baton_t;
 
 static VALUE
-callback(VALUE baton, ...)
+callback(VALUE baton)
 {
   callback_baton_t *cbb = (callback_baton_t *)baton;
   VALUE result;
@@ -1621,7 +1630,7 @@ callback(VALUE baton, ...)
 }
 
 static VALUE
-callback_rescue(VALUE baton, ...)
+callback_rescue(VALUE baton, VALUE unused)
 {
   callback_rescue_baton_t *rescue_baton = (callback_rescue_baton_t*)baton;
 
@@ -1638,7 +1647,7 @@ callback_rescue(VALUE baton, ...)
 }
 
 static VALUE
-callback_ensure(VALUE pool, ...)
+callback_ensure(VALUE pool)
 {
   svn_swig_rb_pop_pool(pool);
 
@@ -1655,19 +1664,18 @@ invoke_callback(VALUE baton, VALUE pool)
   argv[0] = pool;
   svn_swig_rb_get_pool(1, argv, Qnil, &subpool, NULL);
   cbb->pool = subpool;
-  return rb_ensure((VALUE(*)(ANYARGS))callback, baton,
-                   (VALUE(*)(ANYARGS))callback_ensure, subpool);
+  return rb_ensure(callback, baton, callback_ensure, subpool);
 }
 
 static VALUE
-callback_handle_error(VALUE baton, ...)
+callback_handle_error(VALUE baton)
 {
   callback_handle_error_baton_t *handle_error_baton;
   handle_error_baton = (callback_handle_error_baton_t *)baton;
 
-  return rb_rescue2((VALUE(*)(ANYARGS))callback,
+  return rb_rescue2(callback,
                     (VALUE)(handle_error_baton->callback_baton),
-                    (VALUE(*)(ANYARGS))callback_rescue,
+                    callback_rescue,
                     (VALUE)(handle_error_baton->rescue_baton),
                     rb_svn_error(),
                     (VALUE)0);
@@ -1686,9 +1694,8 @@ invoke_callback_handle_error(VALUE baton
   handle_error_baton.callback_baton = cbb;
   handle_error_baton.rescue_baton = &rescue_baton;
 
-  return rb_ensure((VALUE(*)(ANYARGS))callback_handle_error,
-                   (VALUE)&handle_error_baton,
-                   (VALUE(*)(ANYARGS))callback_ensure, pool);
+  return rb_ensure(callback_handle_error, (VALUE)&handle_error_baton,
+                   callback_ensure, pool);
 }
 
 
@@ -1721,7 +1728,7 @@ make_baton(apr_pool_t *pool, VALUE edito
 }
 
 static VALUE
-add_baton_if_delta_editor(VALUE target, VALUE baton)
+add_baton_if_delta_editor(RB_BLOCK_CALL_FUNC_ARGLIST(target, baton))
 {
   if (RTEST(rb_obj_is_kind_of(target, svn_swig_rb_svn_delta_editor()))) {
     add_baton(target, baton);
@@ -1741,8 +1748,7 @@ svn_swig_rb_set_baton(VALUE target, VALU
     target = rb_ary_new3(1, target);
   }
 
-  rb_iterate((VALUE(*)())rb_each, target,
-             (VALUE(*)())add_baton_if_delta_editor, baton);
+  rb_iterate(rb_each, target, add_baton_if_delta_editor, baton);
 }
 
 

Modified: subversion/trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h?rev=1924773&r1=1924772&r2=1924773&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h (original)
+++ subversion/trunk/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h Fri Apr  4 15:56:01 2025
@@ -57,7 +57,9 @@ typedef  int gid_t;
 #if !defined(__cplusplus) && !defined(inline)
 #define inline __inline
 #endif
-typedef long ssize_t;
+#ifndef HAVE_SSIZE_T
+typedef apr_ssize_t ssize_t;
+#endif
 
 /* Don't define iovec when including APR */
 #define APR_IOVEC_DEFINED
@@ -92,6 +94,10 @@ typedef unsigned __int64   uint64_t;
 
 #ifdef _MSC_VER
 #pragma warning(disable: 4702) /* warning C4702: unreachable code */
+#if SWIG_VERSION < 0x040002
+/* Prevent C4113 "X differs in parameter lists from Y" errors */
+# pragma warning(default : 4113)
+#endif
 #endif
 
 #endif /* defined(SVN_SWIG_RUBY__CUSTOM_RUBY_CONFIG) && defined(_MSC_VER) */

Modified: subversion/trunk/subversion/bindings/swig/ruby/svn/util.rb
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/ruby/svn/util.rb?rev=1924773&r1=1924772&r2=1924773&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/ruby/svn/util.rb (original)
+++ subversion/trunk/subversion/bindings/swig/ruby/svn/util.rb Fri Apr  4 15:56:01 2025
@@ -17,7 +17,7 @@
 #    under the License.
 # ====================================================================
 
-if /cygwin|mingw|mswin32|bccwin32/.match(RUBY_PLATFORM)
+if /cygwin|mingw|mswin|bccwin32/.match(RUBY_PLATFORM)
   $LOAD_PATH.each do |load_path|
     svn_ext_path = File.join(load_path, "svn", "ext")
     if File.exist?(svn_ext_path)
@@ -122,7 +122,7 @@ EOC
     end
 
     def reset_message_directory
-      if /cygwin|mingw|mswin32|bccwin32/.match(RUBY_PLATFORM)
+      if /cygwin|mingw|mswin|bccwin32/.match(RUBY_PLATFORM)
         top_directory = File.join(File.dirname(__FILE__), "..", "..")
         top_directory = File.expand_path(top_directory)
         locale_directory = File.join(top_directory, "share", "locale")
@@ -147,7 +147,7 @@ EOC
     end
 
     def windows?
-      /cygwin|mingw|mswin32|bccwin32/.match(RUBY_PLATFORM)
+      /cygwin|mingw|mswin|bccwin32/.match(RUBY_PLATFORM)
     end
   end
 end

Modified: subversion/trunk/subversion/bindings/swig/ruby/test/test_fs.rb
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/ruby/test/test_fs.rb?rev=1924773&r1=1924772&r2=1924773&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/ruby/test/test_fs.rb (original)
+++ subversion/trunk/subversion/bindings/swig/ruby/test/test_fs.rb Fri Apr  4 15:56:01 2025
@@ -219,18 +219,14 @@ class SvnFsTest < Test::Unit::TestCase
     end
 
     start_time = Time.now
+    sleep 0.032r if Svn::Util::windows?
     txn1 = @fs.transaction
     assert_equal([Svn::Core::PROP_REVISION_DATE], txn1.proplist.keys)
     assert_instance_of(Time, txn1.proplist[Svn::Core::PROP_REVISION_DATE])
     date = txn1.prop(Svn::Core::PROP_REVISION_DATE)
 
-    # Subversion's clock is more precise than Ruby's on
-    # Windows.  So this test can fail intermittently because
-    # the begin and end of the range are the same (to 3
-    # decimal places), but the time from Subversion has 6
-    # decimal places so it looks like it's not in the range.
-    # So we just add a smidgen to the end of the Range.
-    assert_operator(start_time..(Time.now + 0.001), :include?, date)
+    sleep 0.032r if Svn::Util::windows?
+    assert_operator(start_time..Time.now, :include?, date)
     txn1.set_prop(Svn::Core::PROP_REVISION_DATE, nil)
     assert_equal([], txn1.proplist.keys)
     assert_equal(youngest_rev, txn1.base_revision)
@@ -420,10 +416,12 @@ class SvnFsTest < Test::Unit::TestCase
       ctx.mkdir(["#{@wc_path}/new_dir"])
 
       start_time = Time.now
+      sleep 0.032r if Svn::Util::windows?
       info = ctx.commit([@wc_path])
 
       assert_equal(@author, info.author)
       assert_equal(@fs.youngest_rev, info.revision)
+      sleep 0.032r if Svn::Util::windows?
       assert_operator(start_time..(Time.now), :include?, info.date)
 
       assert_equal(@author, @fs.prop(Svn::Core::PROP_REVISION_AUTHOR))

Modified: subversion/trunk/subversion/bindings/swig/ruby/test/test_repos.rb
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/ruby/test/test_repos.rb?rev=1924773&r1=1924772&r2=1924773&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/ruby/test/test_repos.rb (original)
+++ subversion/trunk/subversion/bindings/swig/ruby/test/test_repos.rb Fri Apr  4 15:56:01 2025
@@ -279,6 +279,7 @@ class SvnReposTest < Test::Unit::TestCas
       assert_equal(prev_rev, @repos.youngest_rev)
       assert_equal(prev_rev, @repos.dated_revision(past_date))
 
+      sleep 0.032r if Svn::Util::windows?
       prev_rev = @repos.youngest_rev
       @repos.transaction_for_commit(@author, log) do |txn|
       end

Modified: subversion/trunk/subversion/bindings/swig/ruby/test/windows_util.rb
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/ruby/test/windows_util.rb?rev=1924773&r1=1924772&r2=1924773&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/ruby/test/windows_util.rb (original)
+++ subversion/trunk/subversion/bindings/swig/ruby/test/windows_util.rb Fri Apr  4 15:56:01 2025
@@ -38,30 +38,25 @@ module SvnTestUtil
         @svnserve_port = @svnserve_ports.last
         @repos_svnserve_uri = "svn://#{@svnserve_host}:#{@svnserve_port}"
 
-        @@service_created ||= begin
-          @@service_created = true
+        top_directory = File.join(File.dirname(__FILE__), "..", "..", "..", "..", "..")
+        build_type = ENV["BUILD_TYPE"] || "Release"
+        svnserve_path = File.join(top_directory, build_type, 'subversion', 'svnserve', 'svnserve.exe')
+        svnserve_path = Svnserve.escape_value(svnserve_path)
+
+        root = @full_repos_path.tr(File::SEPARATOR, File::ALT_SEPARATOR)
+        FileUtils.mkdir_p(root)
+
+        IO.popen("#{svnserve_path} -d -r #{Svnserve.escape_value(root)} --listen-host #{@svnserve_host} --listen-port #{@svnserve_port} --pid-file #{@svnserve_pid_file}")
+
+        # Give svnserve a bit of time to start
+        sleep 1
 
-          top_directory = File.join(File.dirname(__FILE__), "..", "..", "..", "..", "..")
-          build_type = ENV["BUILD_TYPE"] || "Release"
-          svnserve_path = File.join(top_directory, build_type, 'subversion', 'svnserve', 'svnserve.exe')
-          svnserve_path = Svnserve.escape_value(svnserve_path)
-
-          root = @full_repos_path.tr(File::SEPARATOR, File::ALT_SEPARATOR)
-          FileUtils.mkdir_p(root)
-
-          IO.popen("#{svnserve_path} -d -r #{Svnserve.escape_value(root)} --listen-host #{@svnserve_host} --listen-port #{@svnserve_port} --pid-file #{@svnserve_pid_file}")
-          user = ENV["USERNAME"] || Etc.getlogin
-
-          # Give svnserve a bit of time to start
-          sleep 1
-        end
         true
       end
 
       def teardown_svnserve
-        # TODO:
-        #   Load @svnserve_pid_file
-        #   Kill process
+        pid = File.read(@svnserve_pid_file).to_i
+        Process.kill(:KILL, pid)
       end
 
       def add_pre_revprop_change_hook

Modified: subversion/trunk/subversion/bindings/swig/svn_delta.i
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/svn_delta.i?rev=1924773&r1=1924772&r2=1924773&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/svn_delta.i (original)
+++ subversion/trunk/subversion/bindings/swig/svn_delta.i Fri Apr  4 15:56:01 2025
@@ -273,7 +273,7 @@ svn_swig_rb_delta_editor_get_target_revi
   if (NIL_P(rb_target_address))
     return Qnil;
 
-  target_address = (svn_revnum_t *)(NUM2LONG(rb_target_address));
+  target_address = (svn_revnum_t *)(NUM2SWIG(rb_target_address));
   if (!target_address)
     return Qnil;
 

Modified: subversion/trunk/subversion/bindings/swig/svn_wc.i
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/svn_wc.i?rev=1924773&r1=1924772&r2=1924773&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/svn_wc.i (original)
+++ subversion/trunk/subversion/bindings/swig/svn_wc.i Fri Apr  4 15:56:01 2025
@@ -232,7 +232,7 @@
 
 %typemap(argout) svn_revnum_t *target_revision
 {
-  %append_output(LONG2NUM((long)$1));
+  %append_output(SWIG2NUM($1));
 }
 #endif
 

Modified: subversion/trunk/win-tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/win-tests.py?rev=1924773&r1=1924772&r2=1924773&view=diff
==============================================================================
--- subversion/trunk/win-tests.py (original)
+++ subversion/trunk/win-tests.py Fri Apr  4 15:56:01 2025
@@ -1344,7 +1344,7 @@ elif test_swig == 'ruby':
     ruby_args = [
         '-I', os.path.join(abs_srcdir, ruby_subdir),
         os.path.join(abs_srcdir, ruby_subdir, 'test', 'run-test.rb'),
-        '--verbose'
+        '--collector=dir', '--verbose',
       ]
 
     print('-- Running Swig Ruby tests --')
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.