[Xcb] EWMH API for XCB
Josh Triplett
josh at joshtriplett.org
Tue Dec 15 16:51:25 PST 2009
On Wed, Dec 16, 2009 at 01:14:47AM +0100, Arnaud Fontaine wrote:
> >>>>> Jamey Sharp <jamey at minilop.net> writes:
> > Yeah, the data_len parameter in xcb_ewmh_send_client_message isn't
> > a constant, so it can't be checked at compile time. I meant that
> > you'd add something like this in every caller:
>
> > BUILD_BUG_ON(sizeof data > sizeof ((xcb_client_message_event_t *)
> > 0)->data);
>
> > Unlike an assertion, this doesn't generate any code; instead the
> > compiler can prove that all those calls are safe, but only if
> > you've checked all the callers, which is why I suggested making
> > this function static. Also, you could wrap
> > xcb_ewmh_send_client_message up in a macro that does this, if you
> > wanted.
>
> >> I'm a bit confused by this macro and does not understand anything
> >> besides of the basic principle. I was thinking about simply
> >> adding an assertion otherwise.
>
> > Absolutely, that would be better than nothing.
>
> Well, I think it would be better to not make it static as it could be
> useful to any program implementing extensions to EWMH. Therefore, I have
> just added an assert()[0]. I think it's ok this way, isn't it?
In XCB, we've had some bad experiences with asserts, simply because
end-users notice them and blame XCB rather than buggy applications. :)
Detecting problems at compile time seem ideal when you can. This case
seems somewhat less problematic since an application would have to
explicitly use your new library; however, I'd still suggest doing as
much checking as you possibly can at compile time.
- Josh Triplett
More information about the Xcb
mailing list