qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v12 17/36] qapi: Fix c_name() munging


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v12 17/36] qapi: Fix c_name() munging
Date: Wed, 18 Nov 2015 11:18:57 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Eric Blake <address@hidden> writes:

> *** WARNING: THE ATTACHED DOCUMENT(S) CONTAIN MACROS ***
> *** MACROS MAY CONTAIN MALICIOUS CODE ***
> *** Open only if you can verify and trust the sender ***
> *** Please contact address@hidden if you have questions or concerns **

Another one.

> The method c_name() is supposed to do two different actions: munge
> '-' into '_', and add a 'q_' prefix to ticklish names.  But it did
> these steps out of order, making it possible to submit input that
> is not ticklish until after munging, where the output then lacked
> the desired prefix.
>
> The failure is exposed easily if you have a compiler that recognizes
> C11 keywords, and try to name a member '_Thread-local', as it would
> result in trying to compile the declaration 'uint64_t _Thread_local;'
> which is not valid.  However, this name violates our conventions
> (ultimately, want to enforce that no qapi names start with single
> underscore), so the test is slightly weaker by instead testing
> 'wchar-t'; the declaration 'uint64_t wchar_t;' is valid in C (where
> wchar_t is only a typedef) but fails with a C++ compiler (where it
> is a keyword).

Do we support compiling it with a C++ compiler?  To sidestep the
question, I'd say "but would fail".

In my private opinion, the one sane way to compile C code with a C++
compiler is wrapping it in extern "C" { ... }.

> Fix things by reversing the order of actions within c_name().
>
> Signed-off-by: Eric Blake <address@hidden>

Again, just commit message polish, can do on merge.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]