
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.
The code requires an int already narray = va_arg(args, int); so both the (long long) and (size_t) casts are bogus. We can just remove the cast completely. 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 :|