Author: stsp
Date: Wed Jul 21 19:48:27 2010
New Revision: 966383

URL: http://svn.apache.org/viewvc?rev=966383&view=rev
Log:
Fix the following segfault in svnrdump ('session' is NULL):

#0  0x0388a87d in svn_ra_get_latest_revnum (session=0x0, 
    latest_revnum=0xcfbddbcc, pool=0x88ada018)
    at subversion/libsvn_ra/ra_loader.c:586
586       return session->vtable->get_latest_revnum(session, latest_revnum, pool
);

There is another segfault still but let's fix them one at a time.

* subversion/svnrdump/svnrdump.c
  (open_connection): Add a docstring. Make the SESSION parameter a pointer
   to a pointer so the caller can actually get a useful result from us.
   This used to work before r965418 when SESSION was still a global variable.
  (main): Adjust caller.

Modified:
    subversion/trunk/subversion/svnrdump/svnrdump.c

Modified: subversion/trunk/subversion/svnrdump/svnrdump.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/svnrdump.c?rev=966383&r1=966382&r2=966383&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/svnrdump.c (original)
+++ subversion/trunk/subversion/svnrdump/svnrdump.c Wed Jul 21 19:48:27 2010
@@ -94,8 +94,10 @@ replay_revend(svn_revnum_t revision,
   return SVN_NO_ERROR;
 }
 
+/* Return in *SESSION a new RA session to URL.
+ * Allocate *SESSION and related data structures in POOL. */
 static svn_error_t *
-open_connection(svn_ra_session_t *session, const char *url, apr_pool_t *pool)
+open_connection(svn_ra_session_t **session, const char *url, apr_pool_t *pool)
 {
   svn_client_ctx_t *ctx = NULL;
   SVN_ERR(svn_config_ensure (NULL, pool));
@@ -109,7 +111,7 @@ open_connection(svn_ra_session_t *sessio
                 NULL, NULL, NULL, FALSE,
                 FALSE, NULL, NULL, NULL,
                 pool));
-  SVN_ERR(svn_client_open_ra_session(&session, url, ctx, pool));
+  SVN_ERR(svn_client_open_ra_session(session, url, ctx, pool));
   return SVN_NO_ERROR;
 }
 
@@ -191,7 +193,7 @@ main(int argc, const char **argv)
     usage(stderr);
     return EXIT_FAILURE;
   }
-  SVN_INT_ERR(open_connection(session, url, pool));
+  SVN_INT_ERR(open_connection(&session, url, pool));
 
   /* Have sane start_revision and end_revision defaults if unspecified */
   if (start_revision == svn_opt_revision_unspecified)


Reply via email to