On 06/22/2015 01:26 PM, Markus Armbruster wrote: > qga_vss_fsfreeze() casts error_set_win32() from > > void (*)(Error **, int, ErrorClass, const char *, ...) > > to > > void (*)(void **, int, int, const char *, ...) > > The result is later called. Since the two types are not compatible, > the call is undefined behavior. It works in practice anyway.
Better than some other horrid casts we do, like monitor.c playing fast and loose with 'Monitor *' vs. 'FILE *' in hmp_info_mtree() and friends. But that's a cleanup for another series. > > However, there's no real need for trickery here. Clean it up as > follows: > > * Declare struct Error, and fix the first parameter. > > * Switch to error_setg_win32(). This gets rid of the troublesome > ErrorClass parameter. Requires converting error_setg_win32() from > macro to function, but that's trivially easy, because this is the > only user of error_set_win32(). > > Signed-off-by: Markus Armbruster <arm...@redhat.com> > --- Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature