[PATCH v2] ws2_32: Drop dependencies on system getprotoby(name|number) functions

Alex Henrie alexhenrie24 at gmail.com
Tue Jul 14 10:59:16 CDT 2020


 On Tue, Jul 14, 2020 at 9:41 AM Zebediah Figura <z.figura12 at gmail.com> wrote:
>
> > +    /* keep this list sorted by number for binary search */
>
> This seems to me like it should be a separate patch.

Why? I have to change the implementation of getprotobynumber anyway,
and I don't want to cause a performance regression, so it seems that I
might as well put in the binary search at the same time.

> If binary search is worth implementing, can we just use bsearch() to do it?

Probably yeah. I'll give that a try.

> > +    const char *names[3];
>
> I guess this was copied from the implementation, but surely this can
> just be names[2]?

The NULL name at the end is used as a sentinel in the tests, the same
as in the implementation:

            for (j = 0; protocols[i].names[0][j]; j++)

> > +    { }
>
> If you're using ARRAY_SIZE, does this need to be null-terminated?

Yes, it's used as a sentinel in the tests:

       if (i != ref->prot)

> > +        if (protocols[i].names[0])
>
> Isn't this condition always true?

Yes it is. I meant to remove this condition in v2. I will fix that in
v3. Great catch!

> > +            ok(!ent,
>
> This seems like an odd place for a line break.

It's meant to mirror the format of the other ok statements in
test_getprotobyname and test_getprotobynumber. But it's just a style
thing; I'll delete the line break here if more people say that they
don't like it.

> I guess this test structure isn't too confusing on examination, but it
> might be clearer just to have a semi-reimplementation of
> getprotobynumber() in the tests, to which you compare the actual data.

The test is already a semi-reimplementation of getprotobynumber: It
has a copy of the protocol table that is identical to the
implementation's. How is what you're suggesting different?

-Alex



More information about the wine-devel mailing list