Index: subversion/libsvn_fs_base/reps-strings.c =================================================================== --- subversion/libsvn_fs_base/reps-strings.c (revision 16233) +++ subversion/libsvn_fs_base/reps-strings.c (working copy) @@ -228,7 +228,7 @@ /* Copy the (first) window into the baton. */ apr_pool_t *window_pool = svn_pool_create (cb->trail->pool); assert (cb->window_pool == NULL); - cb->window = svn_txdelta__copy_window (window, window_pool); + cb->window = svn_txdelta_window_dup (window, window_pool); cb->window_pool = window_pool; cb->done = (window->sview_len == 0 || window->src_ops == 0); } Index: subversion/include/svn_delta.h =================================================================== --- subversion/include/svn_delta.h (revision 16233) +++ subversion/include/svn_delta.h (working copy) @@ -175,6 +175,13 @@ } svn_txdelta_window_t; +/** + * Return a deep copy of @a window, allocated in @a pool. + * + * @since New in 1.3. + */ +svn_txdelta_window_t *svn_txdelta_window_dup ( + const svn_txdelta_window_t *window, apr_pool_t *pool); /** A typedef for functions that consume a series of delta windows, for * use in caller-pushes interfaces. Such functions will typically Index: subversion/include/svn_types.h =================================================================== --- subversion/include/svn_types.h (revision 16233) +++ subversion/include/svn_types.h (working copy) @@ -354,6 +354,16 @@ } svn_log_changed_path_t; +/** + * Return a deep copy of @a changed_path, allocated in @a pool. + * + * @since New in 1.3. + */ +svn_log_changed_path_t * +svn_log_changed_path_dup (const svn_log_changed_path_t *changed_path, + apr_pool_t *pool); + + /** The callback invoked by log message loopers, such as * @c svn_ra_plugin_t.get_log() and svn_repos_get_logs(). * Index: subversion/include/svn_auth.h =================================================================== --- subversion/include/svn_auth.h (revision 16233) +++ subversion/include/svn_auth.h (working copy) @@ -294,6 +294,14 @@ const char *ascii_cert; } svn_auth_ssl_server_cert_info_t; +/** + * Return a deep copy of @a info, allocated in @a pool. + * + * @since New in 1.3. + */ +svn_auth_ssl_server_cert_info_t *svn_auth_ssl_server_cert_info_dup ( + const svn_auth_ssl_server_cert_info_t *info, apr_pool_t *pool); + /** @c SVN_AUTH_CRED_SSL_SERVER_TRUST credentials. */ typedef struct svn_auth_cred_ssl_server_trust_t { Index: subversion/libsvn_subr/constructors.c =================================================================== --- subversion/libsvn_subr/constructors.c (revision 16233) +++ subversion/libsvn_subr/constructors.c (working copy) @@ -17,7 +17,9 @@ */ #include +#include +#include "svn_auth.h" #include "svn_types.h" @@ -33,3 +35,37 @@ return commit_info; } +svn_auth_ssl_server_cert_info_t * +svn_auth_ssl_server_cert_info_dup ( + const svn_auth_ssl_server_cert_info_t *info, apr_pool_t *pool) +{ + svn_auth_ssl_server_cert_info_t *new_info = + apr_palloc (pool, sizeof (*new_info)); + + *new_info = *info; + + new_info->hostname = apr_pstrdup (pool, new_info->hostname); + new_info->fingerprint = apr_pstrdup (pool, new_info->fingerprint); + new_info->valid_from = apr_pstrdup (pool, new_info->valid_from); + new_info->valid_until = apr_pstrdup (pool, new_info->valid_until); + new_info->issuer_dname = apr_pstrdup (pool, new_info->issuer_dname); + new_info->ascii_cert = apr_pstrdup (pool, new_info->ascii_cert); + + return new_info; +} + +svn_log_changed_path_t * +svn_log_changed_path_dup (const svn_log_changed_path_t *changed_path, + apr_pool_t *pool) +{ + svn_log_changed_path_t *new_changed_path = + apr_palloc (pool, sizeof (*new_changed_path)); + + *new_changed_path = *changed_path; + + if (new_changed_path->copyfrom_path) + new_changed_path->copyfrom_path = + apr_pstrdup (pool, new_changed_path->copyfrom_path); + + return new_changed_path; +} Index: subversion/libsvn_delta/delta.h =================================================================== --- subversion/libsvn_delta/delta.h (revision 16233) +++ subversion/libsvn_delta/delta.h (working copy) @@ -69,12 +69,6 @@ svn_txdelta__make_window (const svn_txdelta__ops_baton_t *build_baton, apr_pool_t *pool); -/* Return a copy of WINDOW, allocated from POOL. */ -svn_txdelta_window_t * -svn_txdelta__copy_window (const svn_txdelta_window_t *window, - apr_pool_t *pool); - - /* Create vdelta window data. Allocate temporary data from POOL. */ void svn_txdelta__vdelta (svn_txdelta__ops_baton_t *build_baton, const char *start, Index: subversion/libsvn_delta/text_delta.c =================================================================== --- subversion/libsvn_delta/text_delta.c (revision 16233) +++ subversion/libsvn_delta/text_delta.c (working copy) @@ -154,8 +154,8 @@ svn_txdelta_window_t * -svn_txdelta__copy_window (const svn_txdelta_window_t *window, - apr_pool_t *pool) +svn_txdelta_window_dup (const svn_txdelta_window_t *window, + apr_pool_t *pool) { svn_txdelta__ops_baton_t build_baton = { 0 }; svn_txdelta_window_t *new_window;