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

Re: [Xen-devel] [RFC] xen: Add .astylerc for automated style-formatting



On Fri, Aug 2, 2019 at 12:23 PM Juergen Gross <jgross@xxxxxxxx> wrote:

> >> A snipplet from commit 57f8b13c724023c78fa15a80452d1de3e51a1418:
> >>
> >> @@ -4096,14 +4097,12 @@ retry_transaction:
> >>            goto out;
> >>
> >>        if (target == NULL) {
> >> -        libxl__xs_printf(gc, t, target_path, "%"PRIu32,
> >> -                         (uint32_t) info.current_memkb);
> >> -        *target_memkb = (uint32_t) info.current_memkb;
> >> +        libxl__xs_printf(gc, t, target_path, "%"PRIu64,
> >> info.current_memkb);
> >> +        *target_memkb = info.current_memkb;
> >>        }
> >>        if (staticmax == NULL) {
> >> -        libxl__xs_printf(gc, t, max_path, "%"PRIu32,
> >> -                         (uint32_t) info.max_memkb);
> >> -        *max_memkb = (uint32_t) info.max_memkb;
> >> +        libxl__xs_printf(gc, t, max_path, "%"PRIu64, info.max_memkb);
> >> +        *max_memkb = info.max_memkb;
> >>        }
> >>
> >>        rc = 0;
> >>
> >
> > I've build gnu diffutils latest release 3.7 and checked the code and
> > the issue. It seems this feature (-p) doesn't work properly and has
> > many more bugs than just the issue with labels. See the example below,
> > the change has been made in the function a1(), however, in the diff
> > another function is shown a().
>
> This case is completely fine, as the context of the diff is starting
> before the definition of a() (and just after a1()). This is important in
> case you only add a new function for example.
>

Juergen, the diff returns wrong name of the function silently. I don't
think it is 'completely fine', I would rather call it a bug, or
non-documented limitation, but definitely not a feature. As I wrote
previously, I played with -p a little and observed more similar issues
with it. The reason is that the next diff code (see below) tries to
match function names using simple regexp for a line, assuming that
line with function name cannot start with a 'non-alpha' characters. So
even adding one more space before a line with function name breaks it.

diffutils-3.7/src/diff.c:462
    case 'p':
      show_c_function = true;
      add_regexp (&function_regexp_list, "^[[:alpha:]$_]");

It is probably could be improved by adding 'no : symbol at the end of
the line' logic to this regexp. It will resolve the issue with labels,
but will add one more bug (or limitation) about using ":" in such
lines.

The issue is more general here. The diff tool should not parse any
programming languages, it should just compare the strings.

Thanks

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.