On Tue, Jul 12, 2016 at 08:37:28AM -0400, Steven Rostedt wrote:
> On Tue, 12 Jul 2016 10:11:56 +0200
> Jiri Olsa <jo...@redhat.com> wrote:
> 
> 
> > ---
> > diff --git a/tools/perf/util/scripting-engines/trace-event-python.c 
> > b/tools/perf/util/scripting-engines/trace-event-python.c
> > index 75e9790ebb96..9f810e6c739a 100644
> > --- a/tools/perf/util/scripting-engines/trace-event-python.c
> > +++ b/tools/perf/util/scripting-engines/trace-event-python.c
> > @@ -390,11 +390,13 @@ static int is_printable_array(char *p, unsigned int 
> > len)
> >  {
> >     unsigned int i;
> >  
> > -   for (i = 0; i < len; i++)
> > +   /* Exclude the last zero byte of string.. */
> > +   for (i = 0; i < len - 1; i++)
> >             if (!isprint(p[i]) && !isspace(p[i]))
> >                     return 0;
> >  
> > -   return 1;
> > +   /* ... and check its presence in the last byte. */
> > +   return p[i] == 0;
> >  }
> >  
> 
> Of course this fails on:
> 
>       is_printable_array(a, strlen(a));

hum, so string is not passed to trace buffer with 0 at the end?

I'll check the option of passing everything as PyByteArray.
If it's the same for user, we'll have simpler code in here.

> 
> because the last byte wont be 0. What about:
> 
>       for (i = 0; i < len; i++)
>               if (!isprint(p[i]) && !isspace(p[i]))
>                       break;
> 
>       return i == len ||
>               (i == len - 1 && p[i] == 0);

thanks,
jirka

Reply via email to