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