Author: rhuijben
Date: Thu Mar 27 20:46:08 2014
New Revision: 1582468

URL: http://svn.apache.org/r1582468
Log:
Implement cancellation support in a few more places of the blame processing.

* subversion/libsvn_client/blame.c
  (add_file_blame): Pass cancellation info to svn_diff_output2().
  (update_blame,
   svn_client_blame5): Update caller.

Modified:
    subversion/trunk/subversion/libsvn_client/blame.c

Modified: subversion/trunk/subversion/libsvn_client/blame.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/blame.c?rev=1582468&r1=1582467&r2=1582468&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/blame.c (original)
+++ subversion/trunk/subversion/libsvn_client/blame.c Thu Mar 27 20:46:08 2014
@@ -281,6 +281,8 @@ add_file_blame(const char *last_file,
                struct blame_chain *chain,
                struct rev *rev,
                const svn_diff_file_options_t *diff_options,
+               svn_cancel_func_t cancel_func,
+               void *cancel_baton,
                apr_pool_t *pool)
 {
   if (!last_file)
@@ -299,7 +301,8 @@ add_file_blame(const char *last_file,
       /* We have a previous file.  Get the diff and adjust blame info. */
       SVN_ERR(svn_diff_file_diff_2(&diff, last_file, cur_file,
                                    diff_options, pool));
-      SVN_ERR(svn_diff_output(diff, &diff_baton, &output_fns));
+      SVN_ERR(svn_diff_output2(diff, &diff_baton, &output_fns,
+                               cancel_func, cancel_baton));
     }
 
   return SVN_NO_ERROR;
@@ -331,7 +334,9 @@ update_blame(void *baton)
   /* Process this file. */
   SVN_ERR(add_file_blame(frb->last_filename,
                          dbaton->filename, chain, dbaton->rev,
-                         frb->diff_options, frb->currpool));
+                         frb->diff_options,
+                         frb->ctx->cancel_func, frb->ctx->cancel_baton,
+                         frb->currpool));
 
   /* If we are including merged revisions, and the current revision is not a
      merged one, we need to add its blame info to the chain for the original
@@ -342,7 +347,9 @@ update_blame(void *baton)
 
       SVN_ERR(add_file_blame(frb->last_original_filename,
                              dbaton->filename, frb->chain, dbaton->rev,
-                             frb->diff_options, frb->currpool));
+                             frb->diff_options,
+                             frb->ctx->cancel_func, frb->ctx->cancel_baton,
+                             frb->currpool));
 
       /* This filename could be around for a while, potentially, so
          use the longer lifetime pool, and switch it with the previous one*/
@@ -792,7 +799,8 @@ svn_client_blame5(const char *target,
                                    ctx->cancel_baton, pool));
 
           SVN_ERR(add_file_blame(frb.last_filename, temppath, frb.chain, NULL,
-                                 frb.diff_options, pool));
+                                 frb.diff_options,
+                                 ctx->cancel_func, ctx->cancel_baton, pool));
 
           frb.last_filename = temppath;
         }


Reply via email to