[libvirt] [PATCH 01/15] maint: avoid 'const fooPtr' in public API

Daniel P. Berrange berrange at redhat.com
Mon Oct 14 15:16:11 UTC 2013


On Tue, Oct 08, 2013 at 11:24:58AM -0600, Eric Blake wrote:
> 'const fooPtr' is the same as 'foo * const' (the pointer won't
> change, but it's contents can).  But in general, if an interface
> is trying to be const-correct, it should be using 'const foo *'
> (the pointer is to data that can't be changed).
> 
> Fix up offenders in the public API.  Note that this is an API change;
> but see commit 6ac6f59, where we first argued that this change is
> harmless (but with that commit not actually making the change that it
> claimed to be making):
> 
>     Although this is an API change (not ABI though), real callers won't be
>     impacted. Why?
>      1. these callback members are read-only, so it is less likely that
>     someone is trying to assign into the struct members.
>      2. The only way to register a virConnectDomainEventGraphicsCallback is
>     to cast it through a call to virConnectDomainEventRegisterAny.  That is,
>     even if the user's callback function leaves out the const, we never use
>     the typedef as the direct type of any API parameter.  Since they are
>     already casting their function pointer into a munged type before
>     registering it, their code will continue to compile.
> 
> * include/libvirt/libvirt.h.in
> (virConnectDomainEventGraphicsCallback): Use intended type.
> ---
>  include/libvirt/libvirt.h.in | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)

ACK

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list