[libvirt] [PATCH] virdbustest: Don't pass number of arguments as long long

Guido Günther agx at sigxcpu.org
Thu Jul 25 07:02:34 UTC 2013


Hi Eric,
On Wed, Jul 24, 2013 at 03:41:17PM -0600, Eric Blake wrote:
> On 07/24/2013 03:29 PM, Guido Günther wrote:
> > since sizeof(size_t) != sizeof(long long) on 32bit archs.
> > 
> > This unbreaks virdbustest which otherwise fails like:
> > 
> 
> > +++ b/tests/virdbustest.c
> > @@ -195,7 +195,7 @@ static int testMessageArray(const void *args ATTRIBUTE_UNUSED)
> >      if (virDBusMessageEncode(msg,
> >                               "sais",
> >                               in_str1,
> > -                             (long long)3, in_int32a, in_int32b, in_int32c,
> > +                             (size_t)3, in_int32a, in_int32b, in_int32c,
> 
> This fix looks correct, but it's annoying that we have to cast the 'a'
> length argument in every caller.  I'm wondering if a better fix would be
> to virDBusMessageEncode to take an 'int' instead of a 'size_t' arg for
> "a" length; even though that is technically an arbitrary limitation on
> 64-bit platforms, I seriously doubt anyone plans to use dBus to send
> more than 2G of objects.

I'm not sure we need to change anything. Removing the (long long) is
enough to make the tests pass on 32bit as well as 64bit x86. It's just
that we must not pass in an 8byte type on i386. I just left left the
cast to size_t in since I suspected some (yet to me unclear) intention
behind an explicit cast.
Cheers,
 -- Guido

> 
> -- 
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
> 





More information about the libvir-list mailing list