external/poppler/UnpackedTarball_poppler.mk |    1 +
 external/poppler/char_traits.patch          |   11 +++++++++++
 2 files changed, 12 insertions(+)

New commits:
commit b789f54cb0bb2ae2f1d2cba3b3e5920085c8696d
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Thu Nov 24 11:39:20 2022 +0100
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Thu Nov 24 23:14:01 2022 +0100

    external/poppler: Fix use of std::char_trait<unsigned short>
    
    ...now that it is gone from libc++ 16 trunk since
    
<https://github.com/llvm/llvm-project/commit/aeecef08c385b1e4955155dd649a2d3724463849>
    "[libc++] Remove default definition of std::char_traits", causing
    
    > In file included from sdext/source/pdfimport/xpdfwrapper/pnghelper.cxx:20:
    > In file included from sdext/source/pdfimport/xpdfwrapper/pnghelper.hxx:24:
    > In file included from 
sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx:36:
    > In file included from 
workdir/UnpackedTarball/poppler/poppler/GfxState.h:41:
    > In file included from workdir/UnpackedTarball/poppler/poppler/Object.h:43:
    > In file included from workdir/UnpackedTarball/poppler/goo/GooString.h:46:
    > ~/llvm/inst/bin/../include/c++/v1/string:676:46: error: implicit 
instantiation of undefined template 'std::char_traits<unsigned short>'
    >     static_assert(( is_same<_CharT, typename 
traits_type::char_type>::value),
    >                                              ^
    > workdir/UnpackedTarball/poppler/cpp/poppler-global.h:101:43: note: in 
instantiation of template class 'std::basic_string<unsigned short>' requested 
here
    > class POPPLER_CPP_EXPORT ustring : public std::basic_string<unsigned 
short>
    >                                           ^
    > ~/llvm/inst/bin/../include/c++/v1/__fwd/string.h:22:29: note: template is 
declared here
    > struct _LIBCPP_TEMPLATE_VIS char_traits;
    >                             ^
    > In file included from sdext/source/pdfimport/xpdfwrapper/pnghelper.cxx:20:
    > In file included from sdext/source/pdfimport/xpdfwrapper/pnghelper.hxx:24:
    > In file included from 
sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx:36:
    > In file included from 
workdir/UnpackedTarball/poppler/poppler/GfxState.h:41:
    > In file included from workdir/UnpackedTarball/poppler/poppler/Object.h:43:
    > In file included from workdir/UnpackedTarball/poppler/goo/GooString.h:46:
    > In file included from ~/llvm/inst/bin/../include/c++/v1/string:576:
    > ~/llvm/inst/bin/../include/c++/v1/string_view:279:45: error: implicit 
instantiation of undefined template 'std::char_traits<unsigned short>'
    >     static_assert((is_same<_CharT, typename 
traits_type::char_type>::value),
    >                                             ^
    > ~/llvm/inst/bin/../include/c++/v1/__type_traits/is_convertible.h:30:66: 
note: in instantiation of template class 'std::basic_string_view<unsigned 
short>' requested here
    >     : public integral_constant<bool, __is_convertible_to(_T1, _T2)> {};
    >                                                                  ^
    > ~/llvm/inst/bin/../include/c++/v1/string:650:7: note: in instantiation of 
template class 'std::is_convertible<const std::basic_string<unsigned short> &, 
std::basic_string_view<unsigned short>>' requested here
    >       is_convertible<const _Tp&, basic_string_view<_CharT, _Traits> 
>::value &&
    >       ^
    > ~/llvm/inst/bin/../include/c++/v1/string:967:35: note: in instantiation 
of template class 'std::__can_be_converted_to_string_view<unsigned short, 
std::char_traits<unsigned short>, std::basic_string<unsigned short>>' requested 
here
    >             class = 
__enable_if_t<__can_be_converted_to_string_view<_CharT, _Traits, _Tp>::value &&
    >                                   ^
    > ~/llvm/inst/bin/../include/c++/v1/string:969:93: note: in instantiation 
of default argument for 'basic_string<std::basic_string<unsigned short>>' 
required here
    >   _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS 
_LIBCPP_CONSTEXPR_SINCE_CXX20 explicit basic_string(
    >                                                                           
                  ^~~~~~~~~~~~~
    > ~/llvm/inst/bin/../include/c++/v1/string:657:7: note: while substituting 
deduced template arguments into function template 'basic_string' [with _Tp = 
std::basic_string<unsigned short>, $1 = (no value)]
    > class basic_string
    >       ^
    > workdir/UnpackedTarball/poppler/cpp/poppler-global.h:101:26: note: while 
declaring the implicit copy constructor for 'ustring'
    > class POPPLER_CPP_EXPORT ustring : public std::basic_string<unsigned 
short>
    >                          ^
    > ~/llvm/inst/bin/../include/c++/v1/__fwd/string.h:22:29: note: template is 
declared here
    > struct _LIBCPP_TEMPLATE_VIS char_traits;
    >                             ^
    
    Change-Id: Ia1dfda1866ffac22b1c8c99eb11412c095bcc4a3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143237
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/external/poppler/UnpackedTarball_poppler.mk 
b/external/poppler/UnpackedTarball_poppler.mk
index 5726814fee82..62ed7a24ec1d 100644
--- a/external/poppler/UnpackedTarball_poppler.mk
+++ b/external/poppler/UnpackedTarball_poppler.mk
@@ -18,6 +18,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,poppler,\
        external/poppler/pch.patch.0 \
        external/poppler/disable-freetype.patch.1 \
        external/poppler/gcc7-EntityInfo.patch.1 \
+       external/poppler/char_traits.patch \
 ))
 
 ifneq ($(filter -fsanitize=%,$(CC)),)
diff --git a/external/poppler/char_traits.patch 
b/external/poppler/char_traits.patch
new file mode 100644
index 000000000000..3483f2fe22d8
--- /dev/null
+++ b/external/poppler/char_traits.patch
@@ -0,0 +1,11 @@
+--- cpp/poppler-global.h
++++ cpp/poppler-global.h
+@@ -98,7 +98,7 @@
+ #    pragma warning(push)
+ #    pragma warning(disable : 4251) /* class 'A' needs to have dll interface 
for to be used by clients of class 'B'. */
+ #endif
+-class POPPLER_CPP_EXPORT ustring : public std::basic_string<unsigned short>
++class POPPLER_CPP_EXPORT ustring : public std::u16string
+ {
+ public:
+     ustring();

Reply via email to