Submitted By: Douglas R. Reno Date: 2024-08-21 Initial Package Version: 1.14.3 Upstream Status: Applied (r1915239 and r1915236) Origin: Upstream Description: Fixes several issues with the SWIG bindings and GCC 14. These issues present themselves as -Wint-conversion and -Wincompatible-pointer-type errors. Note that after the patch is applied, the entire build system needs to be regenerated, because it is the only way to force a regeneration of the SWIG bindings that we are modifying. diff -Naurp subversion-1.14.3.orig/subversion/bindings/swig/include/svn_containers.swg subversion-1.14.3/subversion/bindings/swig/include/svn_containers.swg --- subversion-1.14.3.orig/subversion/bindings/swig/include/svn_containers.swg 2024-08-21 14:06:20.604374585 -0500 +++ subversion-1.14.3/subversion/bindings/swig/include/svn_containers.swg 2024-08-21 14:52:27.816297199 -0500 @@ -299,7 +299,7 @@ $1 = svn_swig_rb_hash_to_apr_hash_svn_string($input, _global_pool); _global_pool = NULL; if (!NIL_P(rb_pool)) { - if (NIL_P($1)) { + if ($1 == NULL) { svn_swig_rb_destroy_pool(rb_pool); } else { svn_swig_rb_set_pool_for_no_swig_type($input, rb_pool); @@ -373,7 +373,7 @@ svn_swig_rb_hash_to_apr_hash_string($input, _global_pool); _global_pool = NULL; if (!NIL_P(rb_pool)) { - if (NIL_P($1)) { + if ($1 == NULL) { svn_swig_rb_destroy_pool(rb_pool); } else { svn_swig_rb_set_pool_for_no_swig_type($input, rb_pool); diff -Naurp subversion-1.14.3.orig/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c subversion-1.14.3/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c --- subversion-1.14.3.orig/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c 2024-08-21 14:06:20.600374537 -0500 +++ subversion-1.14.3/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c 2024-08-21 14:50:13.814462059 -0500 @@ -788,7 +788,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, rb_set_pool_for_hash_callback, (VALUE)&arg); + rb_hash_foreach(target, (int(*)(ANYARGS))rb_set_pool_for_hash_callback, (VALUE)&arg); return arg.set; } else { return rb_set_pool_if_swig_type_object(target, pool); @@ -806,7 +806,7 @@ svn_swig_rb_set_pool_for_no_swig_type(VA target = rb_ary_new3(1, target); } - rb_iterate(rb_each, target, rb_set_pool, pool); + rb_iterate((VALUE(*)())rb_each, target, (VALUE(*)())rb_set_pool, pool); } void @@ -1070,7 +1070,8 @@ svn_swig_rb_to_apr_array_row_prop(VALUE result = apr_array_make(pool, 0, sizeof(svn_prop_t)); arg.array = result; arg.pool = pool; - rb_hash_foreach(array_or_hash, svn_swig_rb_to_apr_array_row_prop_callback, + rb_hash_foreach(array_or_hash, + (int(*)(ANYARGS))svn_swig_rb_to_apr_array_row_prop_callback, (VALUE)&arg); return result; } else { @@ -1125,7 +1126,8 @@ svn_swig_rb_to_apr_array_prop(VALUE arra result = apr_array_make(pool, 0, sizeof(svn_prop_t *)); arg.array = result; arg.pool = pool; - rb_hash_foreach(array_or_hash, svn_swig_rb_to_apr_array_prop_callback, + rb_hash_foreach(array_or_hash, + (int(*)(ANYARGS))svn_swig_rb_to_apr_array_prop_callback, (VALUE)&arg); return result; } else { @@ -1548,7 +1550,7 @@ r2c_hash(VALUE hash, r2c_func func, void data.func = func; data.pool = pool; - rb_hash_foreach(hash, r2c_hash_i, (VALUE)&data); + rb_hash_foreach(hash, (int(*)(ANYARGS))r2c_hash_i, (VALUE)&data); return apr_hash; } @@ -1570,7 +1572,7 @@ svn_swig_rb_hash_to_apr_hash_svn_string( apr_hash_t * svn_swig_rb_hash_to_apr_hash_swig_type(VALUE hash, const char *typename, apr_pool_t *pool) { - return r2c_hash(hash, r2c_swig_type, (void *)typename, pool); + return r2c_hash(hash, (r2c_func)r2c_swig_type, (void *)typename, pool); } apr_hash_t * @@ -1651,7 +1653,8 @@ 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(callback, baton, callback_ensure, subpool); + return rb_ensure((VALUE(*)(ANYARGS))callback, baton, + (VALUE(*)(ANYARGS))callback_ensure, subpool); } static VALUE @@ -1660,9 +1663,9 @@ 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(callback, + return rb_rescue2((VALUE(*)(ANYARGS))callback, (VALUE)(handle_error_baton->callback_baton), - callback_rescue, + (VALUE(*)(ANYARGS))callback_rescue, (VALUE)(handle_error_baton->rescue_baton), rb_svn_error(), (VALUE)0); @@ -1681,8 +1684,9 @@ invoke_callback_handle_error(VALUE baton handle_error_baton.callback_baton = cbb; handle_error_baton.rescue_baton = &rescue_baton; - return rb_ensure(callback_handle_error, (VALUE)&handle_error_baton, - callback_ensure, pool); + return rb_ensure((VALUE(*)(ANYARGS))callback_handle_error, + (VALUE)&handle_error_baton, + (VALUE(*)(ANYARGS))callback_ensure, pool); } @@ -1735,7 +1739,8 @@ svn_swig_rb_set_baton(VALUE target, VALU target = rb_ary_new3(1, target); } - rb_iterate(rb_each, target, add_baton_if_delta_editor, baton); + rb_iterate((VALUE(*)())rb_each, target, + (VALUE(*)())add_baton_if_delta_editor, baton); }