[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/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271533

            Bug ID: 271533
           Summary: x11/xorgproto: ensure Xos.h does not define index() as
                    a macro
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: [email protected]
          Reporter: [email protected]
          Assignee: [email protected]
             Flags: maintainer-feedback?([email protected])

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>

-- 
You are receiving this mail because:
You are the assignee for the bug.
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.