[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