Re: svn commit: r9485 - in trunk/subversion: libsvn_delta libsvn_fs tests/libsvn_delta
Branko Čibej <[email protected]> Wed, 28 Apr 2004 08:56:26 +0100
| Newsgroups | gmane.comp.version-control.subversion.svn,gmane.mail.eyebrowse.devel |
|---|---|
| Message-ID | <[email protected]> |
[email protected] wrote: >Author: ghudson >Date: Sat Apr 24 19:28:41 2004 >New Revision: 9485 > >Modified: > trunk/subversion/libsvn_delta/compose_delta.c > trunk/subversion/libsvn_delta/delta.h > trunk/subversion/libsvn_fs/reps-strings.c > trunk/subversion/tests/libsvn_delta/random-test.c >Log: >Simplify the delta combiner interface. > > >Modified: trunk/subversion/libsvn_fs/reps-strings.c >============================================================================== >--- trunk/subversion/libsvn_fs/reps-strings.c (original) >+++ trunk/subversion/libsvn_fs/reps-strings.c Sat Apr 24 19:28:41 2004 >@@ -183,30 +183,12 @@ > /* Combine the incoming window with whatever's in the baton. */ > apr_pool_t *composite_pool = svn_pool_create (cb->trail->pool); > svn_txdelta_window_t *composite; >- svn_txdelta__compose_ctx_t context = { 0 }; > >- composite = svn_txdelta__compose_windows >- (window, cb->window, &context, composite_pool); >- >- if (composite) >- { >- svn_pool_destroy (cb->window_pool); >- cb->window = composite; >- cb->window_pool = composite_pool; >- } >- else if (context.use_second) >- { >- svn_pool_destroy (composite_pool); >- cb->window->sview_offset = context.sview_offset; >- cb->window->sview_len = context.sview_len; >- >- /* This can only happen if the window doesn't touch >- source data; so ... */ >- cb->done = TRUE; >- } >- else >- /* Can't happen, because cb->window can't be NULL. */ >- abort (); >+ composite = svn_txdelta__compose_windows (window, cb->window, >+ composite_pool); >+ svn_pool_destroy (cb->window_pool); >+ cb->window = composite; >+ cb->window_pool = composite_pool; > } > else if (window) > { > > A consequence of removing the baton and checks from compose_window is that now compose_handler only checks B->src_ops when it sets up the initial baton, but those are never checked later. Which means that if a windoe in the middle of the delta uses no source ops, we'll still do the combination. Given your cnahges in this commit, I think svn_txdelta__compose_windows should check B->src_ops. I'd also change the allocation guarantee slightly, so that compose_windows can return B without having to copy it to the pool (the compose_handler implementation already assumes so, but that't not documented). -- Brane