maintainer-feedback requested: [Bug 271533] x11/xorgproto: ensure Xos.h does not define index() as a macro

[email protected]
Newsgroups gmane.os.freebsd.devel.x11
Message-ID <[email protected]/bugzilla/>
Bugzilla Automation <[email protected]> has asked freebsd-x11 (Nobody)
<[email protected]> for maintainer-feedback:
Bug 271533: x11/xorgproto: ensure Xos.h does not define index() as a macro
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271533



--- Description ---
During the exp-run for clang 16, it turned out that Xos.h defines
index() and rindex() as preprocessor macros, and this causes many
problems with libc++ headers [1]:

  /usr/include/c++/v1/variant:532:39: error: too few arguments provided to
function-like macro invocation
      return __at(__fmatrix, __vs.index()...)(
					^
  /usr/local/include/X11/Xos.h:67:12: note: macro 'index' defined here
  #   define index(s,c) (strchr((s),(c)))
	     ^
  /usr/include/c++/v1/variant:813:18: error: too few arguments provided to
function-like macro invocation
      return index() == variant_npos;
		   ^
  /usr/local/include/X11/Xos.h:67:12: note: macro 'index' defined here
  #   define index(s,c) (strchr((s),(c)))
	     ^
  /usr/include/c++/v1/variant:817:25: error: expected ';' at end of declaration
list
    constexpr size_t index() const noexcept {
			  ^
  /usr/include/c++/v1/variant:802:9: error: member initializer '__data' does
not name a non-static data member or base class
	: __data(__tag), __index(__variant_npos<__index_t>) {}
	  ^~~~~~~~~~~~~
  /usr/include/c++/v1/variant:808:9: error: member initializer '__data' does
not name a non-static data member or base class
	  __data(in_place_index<_Ip>, _VSTD::forward<_Args>(__args)...),
	  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /usr/include/c++/v1/variant:920:23: error: too few arguments provided to
function-like macro invocation
	    __rhs.index(),
			^
  /usr/local/include/X11/Xos.h:67:12: note: macro 'index' defined here
  #   define index(s,c) (strchr((s),(c)))
	     ^

Add defined(__FreeBSD__) to Xos.h's #if block to include <strings.h>
instead, so it will get our regular index() and rindex() declarations
instead. This has also been sent upstream [2].

[1]
<https://pkg-status.freebsd.org/gohan05/data/mainamd64PR271047-default/2023-05-
14_19h35m09s/logs/errors/scim-1.4.9_7.log>
[2] <https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/73>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.