Smart comparing of wl_display_interfaces

Dmitry Cherkassov dcherkassov at
Wed Oct 15 11:44:25 PDT 2014

Hi list!

The definition of wl_display_interface symbol can come from or

There is a code in closed source EGL implementation that does
interfaces comparison via pointers, yielding negative results when
addresses are different (one address is saved by QtWayland, the other
one is from &wl_display_interface in EGL source code).

Is there a smarter way to compare wl_display_interface's?

There is this function:

wl_interface_equal(const struct wl_interface *a, const struct wl_interface *b)
    return a == b || strcmp(a->name, b->name) == 0;

But as you can see it's not safe to use it alone because in case of
bad pointer we will get undefined results.

Currently struct wl_interface is the following:
 struct wl_interface {
     const char *name;
     int version;
     int method_count;
     const struct wl_message *methods;
     int event_count;
     const struct wl_message *events;

Since there is no magic field at the beginning it is not possible to
see whether a pointer points to the valid wl_interface structure.

So my question is: how can we compare wl_interfaces in more clever and
safer way?

Thank you.

With best regards,

More information about the wayland-devel mailing list