You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2012/09/27 15:55:30 UTC

svn commit: r1391015 - /subversion/trunk/subversion/libsvn_ra_svn/marshal.c

Author: stefan2
Date: Thu Sep 27 13:55:30 2012
New Revision: 1391015

URL: http://svn.apache.org/viewvc?rev=1391015&view=rev
Log:
Fix a major snafu in parameter processing: when working through a va_list
sub-routines must update the orginal argument pointer - not a local copy.

* subversion/libsvn_ra_svn/marshal.c
  (vwrite_tuple_cstring,
   vwrite_tuple_cstring_opt,
   vwrite_tuple_string,
   vwrite_tuple_string_opt,
   vwrite_tuple_word,
   vwrite_tuple_word_opt,
   vwrite_tuple_revision,
   vwrite_tuple_revision_opt,
   vwrite_tuple_number,
   vwrite_tuple_boolean,
   vwrite_tuple_func,
   vwrite_tuple): expect a reference to some va_list
  (svn_ra_svn_write_cmd,
   svn_ra_svn_write_templated_cmd,
   svn_ra_svn_write_cmd_response): provide the reference

Modified:
    subversion/trunk/subversion/libsvn_ra_svn/marshal.c

Modified: subversion/trunk/subversion/libsvn_ra_svn/marshal.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/marshal.c?rev=1391015&r1=1391014&r2=1391015&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/marshal.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/marshal.c Thu Sep 27 13:55:30 2012
@@ -588,94 +588,94 @@ svn_error_t *svn_ra_svn_flush(svn_ra_svn
 /* --- WRITING TUPLES --- */
 
 static svn_error_t *
-vwrite_tuple_cstring(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_cstring(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
-  const char *cstr = va_arg(ap, const char *);
+  const char *cstr = va_arg(*ap, const char *);
   SVN_ERR_ASSERT(cstr);
   return svn_ra_svn_write_cstring(conn, pool, cstr);
 }
 
 static svn_error_t *
-vwrite_tuple_cstring_opt(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_cstring_opt(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
-  const char *cstr = va_arg(ap, const char *);
+  const char *cstr = va_arg(*ap, const char *);
   return cstr ? svn_ra_svn_write_cstring(conn, pool, cstr) : SVN_NO_ERROR;
 }
 
 static svn_error_t *
-vwrite_tuple_string(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_string(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
-  const svn_string_t *str = va_arg(ap, const svn_string_t *);
+  const svn_string_t *str = va_arg(*ap, const svn_string_t *);
   SVN_ERR_ASSERT(str);
   return svn_ra_svn_write_string(conn, pool, str);
 }
 
 static svn_error_t *
-vwrite_tuple_string_opt(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_string_opt(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
-  const svn_string_t *str = va_arg(ap, const svn_string_t *);
+  const svn_string_t *str = va_arg(*ap, const svn_string_t *);
   return str ? svn_ra_svn_write_string(conn, pool, str) : SVN_NO_ERROR;
 }
 
 static svn_error_t *
-vwrite_tuple_start_list(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_start_list(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   return svn_ra_svn_start_list(conn, pool);
 }
 
 static svn_error_t *
-vwrite_tuple_end_list(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_end_list(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   return svn_ra_svn_end_list(conn, pool);
 }
 
 static svn_error_t *
-vwrite_tuple_word(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_word(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
-  const char *cstr = va_arg(ap, const char *);
+  const char *cstr = va_arg(*ap, const char *);
   SVN_ERR_ASSERT(cstr);
   return svn_ra_svn_write_word(conn, pool, cstr);
 }
 
 static svn_error_t *
-vwrite_tuple_word_opt(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_word_opt(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
-  const char *cstr = va_arg(ap, const char *);
+  const char *cstr = va_arg(*ap, const char *);
   return cstr ? svn_ra_svn_write_word(conn, pool, cstr) : SVN_NO_ERROR;
 }
 
 static svn_error_t *
-vwrite_tuple_revision(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_revision(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
-  svn_revnum_t rev = va_arg(ap, svn_revnum_t);
+  svn_revnum_t rev = va_arg(*ap, svn_revnum_t);
   SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(rev));
   return svn_ra_svn_write_number(conn, pool, rev);
 }
 
 static svn_error_t *
-vwrite_tuple_revision_opt(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_revision_opt(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
-  svn_revnum_t rev = va_arg(ap, svn_revnum_t);
+  svn_revnum_t rev = va_arg(*ap, svn_revnum_t);
   return SVN_IS_VALID_REVNUM(rev)
        ? svn_ra_svn_write_number(conn, pool, rev)
        : SVN_NO_ERROR;
 }
 
 static svn_error_t *
-vwrite_tuple_number(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_number(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
-  return svn_ra_svn_write_number(conn, pool, va_arg(ap, apr_uint64_t));
+  return svn_ra_svn_write_number(conn, pool, va_arg(*ap, apr_uint64_t));
 }
 
 static svn_error_t *
-vwrite_tuple_boolean(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_tuple_boolean(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
-  const char *cstr = va_arg(ap, svn_boolean_t) ? "true" : "false";
+  const char *cstr = va_arg(*ap, svn_boolean_t) ? "true" : "false";
   return svn_ra_svn_write_word(conn, pool, cstr);
 }
 
 static svn_error_t *
-vwrite_cmd_open_root(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_open_root(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
   SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
@@ -686,7 +686,7 @@ vwrite_cmd_open_root(svn_ra_svn_conn_t *
 }
 
 static svn_error_t *
-vwrite_cmd_delete_entry(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_delete_entry(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
@@ -698,7 +698,7 @@ vwrite_cmd_delete_entry(svn_ra_svn_conn_
 }
 
 static svn_error_t *
-vwrite_cmd_add_dir(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_add_dir(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -712,7 +712,7 @@ vwrite_cmd_add_dir(svn_ra_svn_conn_t *co
 }
 
 static svn_error_t *
-vwrite_cmd_open_dir(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_open_dir(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -725,7 +725,7 @@ vwrite_cmd_open_dir(svn_ra_svn_conn_t *c
 }
 
 static svn_error_t *
-vwrite_cmd_change_dir_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_change_dir_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -737,7 +737,7 @@ vwrite_cmd_change_dir_prop(svn_ra_svn_co
 }
 
 static svn_error_t *
-vwrite_cmd_absent_dir(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_absent_dir(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -746,7 +746,7 @@ vwrite_cmd_absent_dir(svn_ra_svn_conn_t 
 }
 
 static svn_error_t *
-vwrite_cmd_add_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_add_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -760,7 +760,7 @@ vwrite_cmd_add_file(svn_ra_svn_conn_t *c
 }
 
 static svn_error_t *
-vwrite_cmd_open_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_open_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -773,7 +773,7 @@ vwrite_cmd_open_file(svn_ra_svn_conn_t *
 }
 
 static svn_error_t *
-vwrite_cmd_change_file_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_change_file_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -785,7 +785,7 @@ vwrite_cmd_change_file_prop(svn_ra_svn_c
 }
 
 static svn_error_t *
-vwrite_cmd_close_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_close_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
@@ -796,7 +796,7 @@ vwrite_cmd_close_file(svn_ra_svn_conn_t 
 }
 
 static svn_error_t *
-vwrite_cmd_absent_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_absent_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -805,7 +805,7 @@ vwrite_cmd_absent_file(svn_ra_svn_conn_t
 }
 
 static svn_error_t *
-vwrite_cmd_textdelta_chunk(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_textdelta_chunk(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_string(conn, pool, ap));
@@ -814,7 +814,7 @@ vwrite_cmd_textdelta_chunk(svn_ra_svn_co
 }
 
 static svn_error_t *
-vwrite_cmd_apply_textdelta(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_apply_textdelta(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
@@ -825,13 +825,13 @@ vwrite_cmd_apply_textdelta(svn_ra_svn_co
 }
 
 static svn_error_t *
-vwrite_cmd_no_op(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_no_op(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   return SVN_NO_ERROR;
 }
 
 static svn_error_t *
-vwrite_cmd_set_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_set_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
@@ -845,7 +845,7 @@ vwrite_cmd_set_path(svn_ra_svn_conn_t *c
 }
 
 static svn_error_t *
-vwrite_cmd_link_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_link_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -860,7 +860,7 @@ vwrite_cmd_link_path(svn_ra_svn_conn_t *
 }
 
 static svn_error_t *
-vwrite_cmd_change_rev_prop2(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_change_rev_prop2(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -876,7 +876,7 @@ vwrite_cmd_change_rev_prop2(svn_ra_svn_c
 }
 
 static svn_error_t *
-vwrite_cmd_change_rev_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_change_rev_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -886,7 +886,7 @@ vwrite_cmd_change_rev_prop(svn_ra_svn_co
 }
 
 static svn_error_t *
-vwrite_cmd_rev_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_rev_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
@@ -895,7 +895,7 @@ vwrite_cmd_rev_prop(svn_ra_svn_conn_t *c
 }
 
 static svn_error_t *
-vwrite_cmd_get_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_get_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
@@ -908,7 +908,7 @@ vwrite_cmd_get_file(svn_ra_svn_conn_t *c
 }
 
 static svn_error_t *
-vwrite_cmd_update(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_update(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
   SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
@@ -922,7 +922,7 @@ vwrite_cmd_update(svn_ra_svn_conn_t *con
 }
 
 static svn_error_t *
-vwrite_cmd_switch(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_switch(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
   SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
@@ -936,7 +936,7 @@ vwrite_cmd_switch(svn_ra_svn_conn_t *con
 }
 
 static svn_error_t *
-vwrite_cmd_status(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_status(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
@@ -949,7 +949,7 @@ vwrite_cmd_status(svn_ra_svn_conn_t *con
 }
 
 static svn_error_t *
-vwrite_cmd_diff(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_diff(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
   SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
@@ -965,7 +965,7 @@ vwrite_cmd_diff(svn_ra_svn_conn_t *conn,
 }
 
 static svn_error_t *
-vwrite_cmd_check_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_check_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
@@ -976,7 +976,7 @@ vwrite_cmd_check_path(svn_ra_svn_conn_t 
 }
 
 static svn_error_t *
-vwrite_cmd_stat(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_stat(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
@@ -987,7 +987,7 @@ vwrite_cmd_stat(svn_ra_svn_conn_t *conn,
 }
 
 static svn_error_t *
-vwrite_cmd_get_file_revs(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_get_file_revs(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
@@ -1002,7 +1002,7 @@ vwrite_cmd_get_file_revs(svn_ra_svn_conn
 }
 
 static svn_error_t *
-vwrite_cmd_lock(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_lock(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
@@ -1017,7 +1017,7 @@ vwrite_cmd_lock(svn_ra_svn_conn_t *conn,
 }
 
 static svn_error_t *
-vwrite_cmd_unlock(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_unlock(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
@@ -1029,7 +1029,7 @@ vwrite_cmd_unlock(svn_ra_svn_conn_t *con
 }
 
 static svn_error_t *
-vwrite_cmd_get_locks(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_get_locks(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
@@ -1040,7 +1040,7 @@ vwrite_cmd_get_locks(svn_ra_svn_conn_t *
 }
 
 static svn_error_t *
-vwrite_cmd_replay(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_replay(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
   SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
@@ -1050,7 +1050,7 @@ vwrite_cmd_replay(svn_ra_svn_conn_t *con
 }
 
 static svn_error_t *
-vwrite_cmd_replay_range(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_replay_range(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
   SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
@@ -1061,7 +1061,7 @@ vwrite_cmd_replay_range(svn_ra_svn_conn_
 }
 
 static svn_error_t *
-vwrite_cmd_get_deleted_rev(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+vwrite_cmd_get_deleted_rev(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list *ap)
 {
   SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
   SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
@@ -1072,7 +1072,7 @@ vwrite_cmd_get_deleted_rev(svn_ra_svn_co
 
 
 typedef svn_error_t *
-(*vwrite_tuple_func)(svn_ra_svn_conn_t *, apr_pool_t *, va_list);
+(*vwrite_tuple_func)(svn_ra_svn_conn_t *, apr_pool_t *, va_list *);
 
 typedef struct cmd_template_t
 {
@@ -1135,7 +1135,7 @@ static const cmd_template_t cmd_template
 
 
 static svn_error_t *vwrite_tuple(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
-                                 const char *fmt, va_list ap)
+                                 const char *fmt, va_list *ap)
 {
   svn_boolean_t opt = FALSE;
 
@@ -1186,7 +1186,7 @@ svn_error_t *svn_ra_svn_write_tuple(svn_
   va_list ap;
 
   va_start(ap, fmt);
-  err = vwrite_tuple(conn, pool, fmt, ap);
+  err = vwrite_tuple(conn, pool, fmt, &ap);
   va_end(ap);
   return err;
 }
@@ -1795,7 +1795,7 @@ svn_error_t *svn_ra_svn_write_cmd(svn_ra
   SVN_ERR(svn_ra_svn_start_list(conn, pool));
   SVN_ERR(svn_ra_svn_write_word(conn, pool, cmdname));
   va_start(ap, fmt);
-  err = vwrite_tuple(conn, pool, fmt, ap);
+  err = vwrite_tuple(conn, pool, fmt, &ap);
   va_end(ap);
   return err ? svn_error_trace(err) : svn_ra_svn_end_list(conn, pool);
 }
@@ -1811,7 +1811,7 @@ svn_error_t *svn_ra_svn_write_templated_
                                       cmd_templates[cmd].start_sequence,
                                       cmd_templates[cmd].start_sequence_length));
   va_start(ap, cmd);
-  err = cmd_templates[cmd].write_ops(conn, pool, ap);
+  err = cmd_templates[cmd].write_ops(conn, pool, &ap);
   va_end(ap);
 
   return err ? err : writebuf_write_short_string(conn, pool, ") ) ", 4);
@@ -1826,7 +1826,7 @@ svn_error_t *svn_ra_svn_write_cmd_respon
 
   SVN_ERR(writebuf_write_short_string(conn, pool, "( success ", 10));
   va_start(ap, fmt);
-  err = vwrite_tuple(conn, pool, fmt, ap);
+  err = vwrite_tuple(conn, pool, fmt, &ap);
   va_end(ap);
   return err ? svn_error_trace(err) : svn_ra_svn_end_list(conn, pool);
 }