You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by sv...@apache.org on 2014/04/17 09:47:01 UTC
svn commit: r1588153 - in /subversion/branches/1.8.x: ./
subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
subversion/bindings/swig/ruby/test/test_client.rb
subversion/bindings/swig/svn_client.i
Author: svn-role
Date: Thu Apr 17 07:47:00 2014
New Revision: 1588153
URL: http://svn.apache.org/r1588153
Log:
Merge the r1586052 group from trunk:
* r1586052, r1586467
Fix two memory lifetime bugs in the Ruby bindings.
Justification:
Ruby bindings tests crash with APR pool debugging enabled.
Votes:
+1: stsp
+0: rhuijben (Looks good. Can't test)
sentinel
Modified:
subversion/branches/1.8.x/ (props changed)
subversion/branches/1.8.x/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
subversion/branches/1.8.x/subversion/bindings/swig/ruby/test/test_client.rb
subversion/branches/1.8.x/subversion/bindings/swig/svn_client.i
Propchange: subversion/branches/1.8.x/
------------------------------------------------------------------------------
Merged /subversion/trunk:r1586052,1586467
Modified: subversion/branches/1.8.x/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c?rev=1588153&r1=1588152&r2=1588153&view=diff
==============================================================================
--- subversion/branches/1.8.x/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c (original)
+++ subversion/branches/1.8.x/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c Thu Apr 17 07:47:00 2014
@@ -1192,6 +1192,7 @@ DEFINE_DUP(auth_ssl_server_cert_info)
DEFINE_DUP(wc_entry)
DEFINE_DUP(client_diff_summarize)
DEFINE_DUP(dirent)
+DEFINE_DUP(log_entry)
DEFINE_DUP_NO_CONVENIENCE(client_commit_item3)
DEFINE_DUP_NO_CONVENIENCE(client_proplist_item)
DEFINE_DUP_NO_CONVENIENCE(wc_external_item2)
@@ -2155,9 +2156,7 @@ svn_swig_rb_log_entry_receiver(void *bat
cbb.receiver = proc;
cbb.message = id_call;
- cbb.args = rb_ary_new3(1,
- c2r_swig_type((void *)entry,
- (void *)"svn_log_entry_t *"));
+ cbb.args = rb_ary_new3(1, c2r_log_entry__dup(entry));
invoke_callback_handle_error((VALUE)(&cbb), rb_pool, &err);
}
return err;
Modified: subversion/branches/1.8.x/subversion/bindings/swig/ruby/test/test_client.rb
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/bindings/swig/ruby/test/test_client.rb?rev=1588153&r1=1588152&r2=1588153&view=diff
==============================================================================
--- subversion/branches/1.8.x/subversion/bindings/swig/ruby/test/test_client.rb (original)
+++ subversion/branches/1.8.x/subversion/bindings/swig/ruby/test/test_client.rb Thu Apr 17 07:47:00 2014
@@ -2262,7 +2262,6 @@ class SvnClientTest < Test::Unit::TestCa
end
end
config = Svn::Core::Config.config(@config_path)
- assert_nil(ctx.config)
assert_equal(options, config[Svn::Core::CONFIG_CATEGORY_SERVERS].to_hash)
ctx.config = config
assert_equal(options,
Modified: subversion/branches/1.8.x/subversion/bindings/swig/svn_client.i
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/bindings/swig/svn_client.i?rev=1588153&r1=1588152&r2=1588153&view=diff
==============================================================================
--- subversion/branches/1.8.x/subversion/bindings/swig/svn_client.i (original)
+++ subversion/branches/1.8.x/subversion/bindings/swig/svn_client.i Thu Apr 17 07:47:00 2014
@@ -395,7 +395,13 @@ Callback: svn_client_diff_summarize_func
svn_client_ctx_t(apr_pool_t *pool) {
svn_error_t *err;
svn_client_ctx_t *self;
- err = svn_client_create_context(&self, pool);
+ apr_hash_t *cfg_hash;
+
+ err = svn_config_get_config(&cfg_hash, NULL, pool);
+ if (err)
+ svn_swig_rb_handle_svn_error(err);
+
+ err = svn_client_create_context2(&self, cfg_hash, pool);
if (err)
svn_swig_rb_handle_svn_error(err);
return self;
@@ -512,7 +518,13 @@ svn_client_set_config(svn_client_ctx_t *
apr_hash_t *config,
apr_pool_t *pool)
{
- ctx->config = config;
+ svn_error_t *err;
+
+ apr_hash_clear(ctx->config);
+ err = svn_config_copy_config(&ctx->config, config,
+ apr_hash_pool_get(ctx->config));
+ if (err)
+ svn_swig_rb_handle_svn_error(err);
return Qnil;
}