Skip to content

Ptr<struct> passed to external struct * param in benchmarks #731

Open
@kyleheadley

Description

@kyleheadley

libarchive and icecast have errors like:

fserve.c:175:19: error (parameter_incompatible): passing '_Array_ptr<struct pollfd>' to parameter of incompatible type 'struct pollfd *'
    else if (poll(ufds, fserve_clients, 200) > 0)
                  ^~~~

which call an external library (in this case sys/poll.h) with unchecked parameters, but either allow the argument to be checked, or don't add the cast. My oversimplified test shows 3c behaving properly:

#include <sys/poll.h>

// _Ptr<struct pollfd> f = 0; // cast added to poll
struct pollfd *f = 0; // doesn't convert because of poll

void test() {
  poll(f,2,200);
}

So the benchmark examples must be doing something more complex here.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions