[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

--- Comment #3 from [email protected] ---
A commit in branch main references this bug:

URL:
https://cgit.FreeBSD.org/ports/commit/?id=e5a0215417930a60ac8fbbc630fad6aa354446e5

commit e5a0215417930a60ac8fbbc630fad6aa354446e5
Author:     Dimitry Andric <[email protected]>
AuthorDate: 2023-05-20 15:15:41 +0000
Commit:     Dimitry Andric <[email protected]>
CommitDate: 2023-05-21 09:12:30 +0000

    x11/xorgproto: ensure Xos.h does not define index() as a macro

    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>

    PR:             271533
    Approved by:    manu (maintainer)
    MFH:            2023Q2

 x11/xorgproto/Makefile                            |  1 +
 x11/xorgproto/files/patch-include_X11_Xos.h (new) | 11 +++++++++++
 2 files changed, 12 insertions(+)

--- Comment #4 from Dimitry Andric <[email protected]> ---
Note that in the mean time, upstream has applied my merge request:
https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/commit/6c3a7302fcc7ecf05960ad1794c5effeda5d4945

-- 
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.