You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Malcolm Rowe <ma...@farside.org.uk> on 2006/03/30 14:51:11 UTC

r16476 broke binary compatibility with 1.0/1.1 clients

Hi Peter,

r16476 (adding diff --summarize API calls) effectively changed the
prototype for svn_ra_plugin_t->do_diff() vtable member (though you
changed only the callers and implementations, not the svn_ra_plugin_t
structure itself, so the prototype and uses are actually mismatched).

This will break direct users of the vtable, won't it? (i.e. all callers
written against the 1.0 or 1.1 API).

I guess that we need to split the RA vtables into a private-use vtable for
the flat svn_ra_xxx functions and a 'public' vtable for 1.0/1.1 callers;
the latter would then have a reference to a compatbility diff function
that doesn't expect the text_deltas argument.

Sorry I didn't notice this before - I just spotted it while researching
how to add my own extra parameter to svn_ra_diffX.

Regards,
Malcolm

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: r16476 broke binary compatibility with 1.0/1.1 clients

Posted by Malcolm Rowe <ma...@farside.org.uk>.
On Thu, Mar 30, 2006 at 05:09:17PM +0200, Peter N. Lundblad wrote:
> Malcolm Rowe writes:
>  > r16476 (adding diff --summarize API calls) effectively changed the
>  > prototype for svn_ra_plugin_t->do_diff() vtable member (though you
>  > changed only the callers and implementations, not the svn_ra_plugin_t
>  > structure itself, so the prototype and uses are actually mismatched).
> 
> I didn't change the deprecated plugin prototypes. I added a TRUE value
> to the call of do_diff in the new (private) vtable.  That being said,
> the log message was misleading, which I fixed.
> 

Two vtables?  What a crazy concept!
How on earth did I miss that, I wonder? :-)

>  > I guess that we need to split the RA vtables into a private-use vtable for
>  > the flat svn_ra_xxx functions and a 'public' vtable for 1.0/1.1 callers;
>  > the latter would then have a reference to a compatbility diff function
>  > that doesn't expect the text_deltas argument.
>  > 
> Good idea. See r12801:-)  The point of that was actually to be able to
> change the vtable without having to provide compat wrappers in all
> three RA implementations (and to make the use of this API cleaner).
> 

Doh!  Thanks for educating me!

Regards,
Malcolm

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: r16476 broke binary compatibility with 1.0/1.1 clients

Posted by "Peter N. Lundblad" <pe...@famlundblad.se>.
Malcolm Rowe writes:
 > r16476 (adding diff --summarize API calls) effectively changed the
 > prototype for svn_ra_plugin_t->do_diff() vtable member (though you
 > changed only the callers and implementations, not the svn_ra_plugin_t
 > structure itself, so the prototype and uses are actually mismatched).

I didn't change the deprecated plugin prototypes. I added a TRUE value
to the call of do_diff in the new (private) vtable.  That being said,
the log message was misleading, which I fixed.

 > I guess that we need to split the RA vtables into a private-use vtable for
 > the flat svn_ra_xxx functions and a 'public' vtable for 1.0/1.1 callers;
 > the latter would then have a reference to a compatbility diff function
 > that doesn't expect the text_deltas argument.
 > 
Good idea. See r12801:-)  The point of that was actually to be able to
change the vtable without having to provide compat wrappers in all
three RA implementations (and to make the use of this API cleaner).

Thanks,
//Peter

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org