[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] trace: Fix 'char **' compilation error in simpl
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH] trace: Fix 'char **' compilation error in simple backend |
Date: |
Tue, 25 Oct 2016 21:29:16 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 |
On 10/25/2016 08:59 PM, Fam Zheng wrote:
> Currently, the generated function body will do "strlen(arg)" but the
> argument could be 'char **'. Avoid that by exclusding such cases in
s/exclusding/excluding/
> is_string check.
>
> Reported by patchew's "make address@hidden".
>
> Signed-off-by: Fam Zheng <address@hidden>
> ---
> scripts/tracetool/backend/simple.py | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/tracetool/backend/simple.py
> b/scripts/tracetool/backend/simple.py
> index 9885e83..2538795 100644
> --- a/scripts/tracetool/backend/simple.py
> +++ b/scripts/tracetool/backend/simple.py
> @@ -21,7 +21,9 @@ PUBLIC = True
>
> def is_string(arg):
> strtype = ('const char*', 'char*', 'const char *', 'char *')
> - if arg.lstrip().startswith(strtype):
> + non_strtype = ('const char**', 'char**', 'const char **', 'char **')
> + arg_strip = arg.lstrip()
> + if arg_strip.startswith(strtype) and not
> arg_strip.startswith(non_strtype):
There may be a more compact way to write it, but I'm not enough of a
python expert to know offhand what else to suggest (it's not as simple
as string concatenation of strtype + '*', since strtype is a tuple
rather than a string).
What you have will fail to detect 'const char *const *' as a non-string
(possible if we have some argv-like function that takes a constant array
of constant strings), but I guess we can worry about that if we actually
try to trace something with that signature. In the meantime, what you
have solves the immediate failure, so:
Reviewed-by: Eric Blake <address@hidden>
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature