On 11/19/2015 01:01 AM, Markus Armbruster wrote: >>>> This has a couple of subtle bugs. First, the generator was >>>> creating a call with a parameter '(int *) &(*obj)->type' where >>>> type is an enum type; this is unsafe if the compiler chooses >>>> to store the enum type in a different size than int, where >>>> assigning through the wrong size pointer can corrupt data or >>>> cause a SIGBUS. [We still have the casting bug for our enum >>>> visitors, but that's a topic for a different patch.] >>> >>> I'm not sure I get the last sentence. >> >> I was referring to our casts of enum types to int* inside visit_type_Enum(): >> https://lists.gnu.org/archive/html/qemu-devel/2015-11/msg03408.html >> >> If you have a better wording for it, or want to drop the parenthetical >> altogether, I'm fine. > > What about this: replace the parenthetical with > > Related bug, not fixed in this patch: qapi-visit.py's > gen_visit_enum() generates a cast of its enum * argument to int *. > Marked FIXME. > > and squash in > > diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py > index e8b53b3..4797d6e 100644 > --- a/scripts/qapi-visit.py > +++ b/scripts/qapi-visit.py > @@ -172,6 +172,7 @@ out: > > > def gen_visit_enum(name): > + # FIXME cast from enum *obj to int * invalidly assumes enum is int > return mcgen('''
That works for me. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature