Index: subversion/libsvn_repos/dump.c =================================================================== --- subversion/libsvn_repos/dump.c (revision 1680667) +++ subversion/libsvn_repos/dump.c (working copy) @@ -2423,33 +2423,21 @@ svn_repos_verify_fs3(svn_repos_t *repos, verify_notify, verify_notify_baton, cancel_func, cancel_baton, pool); - if (err) + if (err && err->apr_err == SVN_ERR_CANCELLED) { - if (err->apr_err == SVN_ERR_CANCELLED) - return svn_error_trace(err); - + return svn_error_trace(err); + } + else if (err && !keep_going) + { + /* Return the error, as the caller doesn't want us to continue. */ + return svn_error_trace(err); + } + else if (err && keep_going) + { + /* Notify about the error and keep going. */ found_corruption = TRUE; notify_verification_error(SVN_INVALID_REVNUM, err, notify_func, notify_baton, iterpool); - - /* If we already reported the error, reset it. */ - if (notify_func) - { - svn_error_clear(err); - err = NULL; - } - - /* If we abort the verification now, combine yet unreported error - info with the generic one we return. */ - if (!keep_going) - /* ### Jump to "We're done" and so send the final notification, - for consistency? */ - return svn_error_createf(SVN_ERR_REPOS_CORRUPTED, err, - _("Repository '%s' failed to verify"), - svn_dirent_local_style(svn_repos_path(repos, - pool), - pool)); - svn_error_clear(err); } @@ -2464,24 +2452,26 @@ svn_repos_verify_fs3(svn_repos_t *repos, cancel_func, cancel_baton, iterpool); - if (err) + if (err && err->apr_err == SVN_ERR_CANCELLED) { - if (err->apr_err == SVN_ERR_CANCELLED) - return svn_error_trace(err); - + return svn_error_trace(err); + } + else if (err && !keep_going) + { + /* Return the error, as the caller doesn't want us to continue. */ + return svn_error_trace(err); + } + else if (err && keep_going) + { + /* Notify about the error and keep going. */ found_corruption = TRUE; notify_verification_error(rev, err, notify_func, notify_baton, iterpool); svn_error_clear(err); - - if (keep_going) - continue; - else - break; } - - if (notify_func) + else if (!err && notify_func) { + /* Tell the caller that we're done with this revision. */ notify->revision = rev; notify_func(notify_baton, notify, iterpool); }