xmlsecurity/source/component/documentdigitalsignatures.cxx |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

New commits:
commit 84beb59bb745291c0462a369ec0bcf7af3e2f1c8
Author:     Stephan Bergmann <[email protected]>
AuthorDate: Thu Jan 22 10:09:57 2026 +0100
Commit:     Stephan Bergmann <[email protected]>
CommitDate: Fri Jan 23 08:05:10 2026 +0100

    Silence spurious -Werror=array-bounds=
    
    seen at least with recent GCC 16 trunk,
    
    > In file included from ~/gcc/inst/include/c++/16.0.1/bits/shared_ptr.h:53,
    >                  from ~/gcc/inst/include/c++/16.0.1/memory:82,
    >                  from include/unotools/syslocale.hxx:25,
    >                  from include/unotools/resmgr.hxx:24,
    >                  from xmlsecurity/inc/resourcemanager.hxx:22,
    >                  from 
xmlsecurity/source/component/documentdigitalsignatures.cxx:20:
    > In destructor ‘std::_Sp_counted_ptr_inplace<_Tp, _Alloc, 
_Lp>::~_Sp_counted_ptr_inplace() [with _Tp = DigitalSignaturesDialog; _Alloc = 
std::allocator<void>; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’,
    >     inlined from ‘std::_Sp_counted_ptr_inplace<_Tp, _Alloc, 
_Lp>::~_Sp_counted_ptr_inplace() [with _Tp = DigitalSignaturesDialog; _Alloc = 
std::allocator<void>; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:670:45,
    >     inlined from ‘void std::_Sp_counted_base<_Lp>::_M_destroy() [with 
__gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:143:9,
    >     inlined from ‘void std::_Sp_counted_base<_Lp>::_M_release() [with 
__gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:424:18,
    >     inlined from ‘void std::_Sp_counted_base<_Lp>::_M_release() [with 
__gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:392:5,
    >     inlined from ‘std::__shared_count<_Lp>::~__shared_count() [with 
__gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:1129:21,
    >     inlined from ‘std::__shared_ptr<_Tp, _Lp>::~__shared_ptr() [with _Tp 
= CertificateChooser; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:1603:7,
    >     inlined from ‘std::shared_ptr<CertificateChooser>::~shared_ptr()’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr.h:175:11,
    >     inlined from 
‘com::sun::star::uno::Sequence<com::sun::star::uno::Reference<com::sun::star::security::XCertificate>
 > 
{anonymous}::DocumentDigitalSignatures::chooseCertificatesImpl.constprop(SfxViewShell*,
 std::__debug::map<rtl::OUString, rtl::OUString>&, 
CertificateChooserUserAction, com::sun::star::security::CertificateKind)’ at 
xmlsecurity/source/component/documentdigitalsignatures.cxx:674:1:
    > ~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:670:45: error: array 
subscript ‘std::_Sp_counted_ptr_inplace<DigitalSignaturesDialog, 
std::allocator<void>, __gnu_cxx::_S_atomic>[0]’ is partly outside array bounds 
of ‘unsigned char [384]’ [-Werror=array-bounds=]
    >   670 |       ~_Sp_counted_ptr_inplace() noexcept { }
    >       |                                             ^
    > In file included from 
~/gcc/inst/include/c++/16.0.1/x86_64-pc-linux-gnu/bits/c++allocator.h:33,
    >                  from ~/gcc/inst/include/c++/16.0.1/bits/allocator.h:46,
    >                  from ~/gcc/inst/include/c++/16.0.1/memory:67:
    > In member function ‘_Tp* std::__new_allocator<_Tp>::allocate(size_type, 
const void*) [with _Tp = std::_Sp_counted_ptr_inplace<CertificateChooser, 
std::allocator<void>, __gnu_cxx::_S_atomic>]’,
    >     inlined from ‘constexpr _Tp* std::allocator< <template-parameter-1-1> 
>::allocate(std::size_t) [with _Tp = 
std::_Sp_counted_ptr_inplace<CertificateChooser, std::allocator<void>, 
__gnu_cxx::_S_atomic>]’ at 
~/gcc/inst/include/c++/16.0.1/bits/allocator.h:203:40,
    >     inlined from ‘static constexpr _Tp* 
std::allocator_traits<std::allocator<_Up> >::allocate(allocator_type&, 
size_type) [with _Tp = std::_Sp_counted_ptr_inplace<CertificateChooser, 
std::allocator<void>, __gnu_cxx::_S_atomic>]’ at 
~/gcc/inst/include/c++/16.0.1/bits/alloc_traits.h:614:28,
    >     inlined from ‘std::__allocated_ptr<_Alloc> 
std::__allocate_guarded(_Alloc&) [with _Alloc = 
allocator<_Sp_counted_ptr_inplace<CertificateChooser, allocator<void>, 
__gnu_cxx::_S_atomic> >]’ at 
~/gcc/inst/include/c++/16.0.1/bits/allocated_ptr.h:103:69,
    >     inlined from ‘std::__shared_count<_Lp>::__shared_count(_Tp*&, 
std::_Sp_alloc_shared_tag<_Alloc>, _Args&& ...) [with _Tp = CertificateChooser; 
_Alloc = std::allocator<void>; _Args = {weld::Window*&, SfxViewShell*&, 
std::__debug::vector<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>,
 
std::allocator<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>
 > >, CertificateChooserUserAction&}; __gnu_cxx::_Lock_policy _Lp = 
__gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:1027:9,
    >     inlined from ‘std::__shared_ptr<_Tp, 
_Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = 
std::allocator<void>; _Args = {weld::Window*&, SfxViewShell*&, 
std::__debug::vector<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>,
 
std::allocator<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>
 > >, CertificateChooserUserAction&}; _Tp = CertificateChooser; 
__gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:1805:14,
    >     inlined from 
‘std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) 
[with _Alloc = std::allocator<void>; _Args = {weld::Window*&, SfxViewShell*&, 
std::__debug::vector<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>,
 
std::allocator<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>
 > >, CertificateChooserUserAction&}; _Tp = CertificateChooser]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr.h:463:59,
    >     inlined from ‘std::shared_ptr<std::_NonArray<_Tp> > 
std::make_shared(_Args&& ...) [with _Tp = CertificateChooser; _Args = 
{weld::Window*&, SfxViewShell*&, 
__debug::vector<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>,
 
allocator<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>
 > >, CertificateChooserUserAction&}]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr.h:1066:39,
    >     inlined from ‘static std::shared_ptr<CertificateChooser> 
CertificateChooser::getInstance(weld::Window*, SfxViewShell*, 
std::__debug::vector<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>
 >&&, CertificateChooserUserAction)’ at 
xmlsecurity/inc/certificatechooser.hxx:111:113,
    >     inlined from 
‘com::sun::star::uno::Sequence<com::sun::star::uno::Reference<com::sun::star::security::XCertificate>
 > 
{anonymous}::DocumentDigitalSignatures::chooseCertificatesImpl.constprop(SfxViewShell*,
 std::__debug::map<rtl::OUString, rtl::OUString>&, 
CertificateChooserUserAction, com::sun::star::security::CertificateKind)’ at 
xmlsecurity/source/component/documentdigitalsignatures.cxx:664:171:
    > ~/gcc/inst/include/c++/16.0.1/bits/new_allocator.h:151:73: note: object 
of size 384 allocated by ‘operator new’
    >   151 |     return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * 
sizeof(_Tp)));
    >       |                                                                   
  ^
    > In destructor ‘std::_Sp_counted_ptr_inplace<_Tp, _Alloc, 
_Lp>::~_Sp_counted_ptr_inplace() [with _Tp = DigitalSignaturesDialog; _Alloc = 
std::allocator<void>; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’,
    >     inlined from ‘void std::_Sp_counted_ptr_inplace<_Tp, _Alloc, 
_Lp>::_M_destroy() [with _Tp = DigitalSignaturesDialog; _Alloc = 
std::allocator<void>; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:684:32,
    >     inlined from ‘void std::_Sp_counted_base<_Lp>::_M_release() [with 
__gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:424:18,
    >     inlined from ‘void std::_Sp_counted_base<_Lp>::_M_release() [with 
__gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:392:5,
    >     inlined from ‘std::__shared_count<_Lp>::~__shared_count() [with 
__gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:1129:21,
    >     inlined from ‘std::__shared_ptr<_Tp, _Lp>::~__shared_ptr() [with _Tp 
= CertificateChooser; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:1603:7,
    >     inlined from ‘std::shared_ptr<CertificateChooser>::~shared_ptr()’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr.h:175:11,
    >     inlined from 
‘com::sun::star::uno::Sequence<com::sun::star::uno::Reference<com::sun::star::security::XCertificate>
 > 
{anonymous}::DocumentDigitalSignatures::chooseCertificatesImpl.constprop(SfxViewShell*,
 std::__debug::map<rtl::OUString, rtl::OUString>&, 
CertificateChooserUserAction, com::sun::star::security::CertificateKind)’ at 
xmlsecurity/source/component/documentdigitalsignatures.cxx:674:1:
    > ~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:670:45: error: array 
subscript ‘std::_Sp_counted_ptr_inplace<DigitalSignaturesDialog, 
std::allocator<void>, __gnu_cxx::_S_atomic>[0]’ is partly outside array bounds 
of ‘unsigned char [384]’ [-Werror=array-bounds=]
    >   670 |       ~_Sp_counted_ptr_inplace() noexcept { }
    >       |                                             ^
    > In member function ‘_Tp* std::__new_allocator<_Tp>::allocate(size_type, 
const void*) [with _Tp = std::_Sp_counted_ptr_inplace<CertificateChooser, 
std::allocator<void>, __gnu_cxx::_S_atomic>]’,
    >     inlined from ‘constexpr _Tp* std::allocator< <template-parameter-1-1> 
>::allocate(std::size_t) [with _Tp = 
std::_Sp_counted_ptr_inplace<CertificateChooser, std::allocator<void>, 
__gnu_cxx::_S_atomic>]’ at 
~/gcc/inst/include/c++/16.0.1/bits/allocator.h:203:40,
    >     inlined from ‘static constexpr _Tp* 
std::allocator_traits<std::allocator<_Up> >::allocate(allocator_type&, 
size_type) [with _Tp = std::_Sp_counted_ptr_inplace<CertificateChooser, 
std::allocator<void>, __gnu_cxx::_S_atomic>]’ at 
~/gcc/inst/include/c++/16.0.1/bits/alloc_traits.h:614:28,
    >     inlined from ‘std::__allocated_ptr<_Alloc> 
std::__allocate_guarded(_Alloc&) [with _Alloc = 
allocator<_Sp_counted_ptr_inplace<CertificateChooser, allocator<void>, 
__gnu_cxx::_S_atomic> >]’ at 
~/gcc/inst/include/c++/16.0.1/bits/allocated_ptr.h:103:69,
    >     inlined from ‘std::__shared_count<_Lp>::__shared_count(_Tp*&, 
std::_Sp_alloc_shared_tag<_Alloc>, _Args&& ...) [with _Tp = CertificateChooser; 
_Alloc = std::allocator<void>; _Args = {weld::Window*&, SfxViewShell*&, 
std::__debug::vector<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>,
 
std::allocator<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>
 > >, CertificateChooserUserAction&}; __gnu_cxx::_Lock_policy _Lp = 
__gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:1027:9,
    >     inlined from ‘std::__shared_ptr<_Tp, 
_Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = 
std::allocator<void>; _Args = {weld::Window*&, SfxViewShell*&, 
std::__debug::vector<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>,
 
std::allocator<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>
 > >, CertificateChooserUserAction&}; _Tp = CertificateChooser; 
__gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr_base.h:1805:14,
    >     inlined from 
‘std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) 
[with _Alloc = std::allocator<void>; _Args = {weld::Window*&, SfxViewShell*&, 
std::__debug::vector<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>,
 
std::allocator<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>
 > >, CertificateChooserUserAction&}; _Tp = CertificateChooser]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr.h:463:59,
    >     inlined from ‘std::shared_ptr<std::_NonArray<_Tp> > 
std::make_shared(_Args&& ...) [with _Tp = CertificateChooser; _Args = 
{weld::Window*&, SfxViewShell*&, 
__debug::vector<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>,
 
allocator<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>
 > >, CertificateChooserUserAction&}]’ at 
~/gcc/inst/include/c++/16.0.1/bits/shared_ptr.h:1066:39,
    >     inlined from ‘static std::shared_ptr<CertificateChooser> 
CertificateChooser::getInstance(weld::Window*, SfxViewShell*, 
std::__debug::vector<com::sun::star::uno::Reference<com::sun::star::xml::crypto::XXMLSecurityContext>
 >&&, CertificateChooserUserAction)’ at 
xmlsecurity/inc/certificatechooser.hxx:111:113,
    >     inlined from 
‘com::sun::star::uno::Sequence<com::sun::star::uno::Reference<com::sun::star::security::XCertificate>
 > 
{anonymous}::DocumentDigitalSignatures::chooseCertificatesImpl.constprop(SfxViewShell*,
 std::__debug::map<rtl::OUString, rtl::OUString>&, 
CertificateChooserUserAction, com::sun::star::security::CertificateKind)’ at 
xmlsecurity/source/component/documentdigitalsignatures.cxx:664:171:
    > ~/gcc/inst/include/c++/16.0.1/bits/new_allocator.h:151:73: note: object 
of size 384 allocated by ‘operator new’
    >   151 |     return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * 
sizeof(_Tp)));
    >       |                                                                   
  ^
    
    Change-Id: I19ffa8f6d2b7a7c87fe3fbece2eb5e6dc147aa04
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197838
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <[email protected]>

diff --git a/xmlsecurity/source/component/documentdigitalsignatures.cxx 
b/xmlsecurity/source/component/documentdigitalsignatures.cxx
index a43cec7dc6bb..79d77164256e 100644
--- a/xmlsecurity/source/component/documentdigitalsignatures.cxx
+++ b/xmlsecurity/source/component/documentdigitalsignatures.cxx
@@ -671,7 +671,14 @@ 
DocumentDigitalSignatures::chooseCertificatesImpl(SfxViewShell* pViewShell,
     rProperties[u"Usage"_ustr] = aChooser->GetUsageText();
 
     return xCerts;
-}
+#if defined __GNUC__ && !defined __clang__ && __GNUC__ == 16
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
+}
+#if defined __GNUC__ && !defined __clang__ && __GNUC__ == 16
+#pragma GCC diagnostic pop
+#endif
 
 Reference< css::security::XCertificate > 
DocumentDigitalSignatures::chooseCertificate(OUString& rDescription)
 {

Reply via email to