On 12/14/2010 02:22 AM, Alan Coopersmith wrote: > Callers who had successfully built without issues with the existing > libX11 headers were suddenly either given warnings or errors (-Werror) > with the new headers. I've stumbled into this and I'd really appreciate if someone could clarify.
AFAIK "const char**" promises "through that pointer no-one messes with the contents". So why the heck are there no implicit conversions to catch up with that? Do I need to pass -fapply-common-sense? Waiting for enlightenment, Simon > > This compromise solution allows us to move to the correct declaration > without breaking such callers - if they simply include the headers as > is, nothing changes for them. If they want to take advantage of the > new const declaration to avoid getting warnings from passing arrays of > string literals, then they can #define XINTERNATOMS_WANT_CONST_NAMES > before they #include <X11/Xlib.h>. Callers using pkg-config will > eventually be able to require x11 > 1.4 to get this - those not using > pkg-config or not wanting a hard requirement can simply check after > the #include <X11/Xlib.h> for #ifdef XINTERNATOMS_HAVE_CONST_NAMES > to see if the header is new enough to have satisfied their request. > > Signed-off-by: Alan Coopersmith <[email protected]> > --- > include/X11/Xlib.h | 5 +++++ > src/IntAtom.c | 2 ++ > 2 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/include/X11/Xlib.h b/include/X11/Xlib.h > index b0d7d4d..c33019e 100644 > --- a/include/X11/Xlib.h > +++ b/include/X11/Xlib.h > @@ -1548,7 +1548,12 @@ extern Atom XInternAtom( > ); > extern Status XInternAtoms( > Display* /* dpy */, > +#ifdef XINTERNATOMS_WANT_CONST_NAMES > +# define XINTERNATOMS_HAVE_CONST_NAMES > _Xconst char** /* names */, > +#else > + char** /* names */, > +#endif > int /* count */, > Bool /* onlyIfExists */, > Atom* /* atoms_return */ > diff --git a/src/IntAtom.c b/src/IntAtom.c > index 80d78c0..751584a 100644 > --- a/src/IntAtom.c > +++ b/src/IntAtom.c > @@ -26,6 +26,8 @@ from The Open Group. > > */ > > +#define XINTERNATOMS_WANT_CONST_NAMES /* must come before Xlib.h is included > */ > + > #ifdef HAVE_CONFIG_H > #include <config.h> > #endif _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
