oox/source/export/drawingml.cxx |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

New commits:
commit c712520cf327de27553f62d0defcce4ba901e4c7
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Thu Aug 4 09:02:45 2022 +0200
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Thu Aug 4 11:21:42 2022 +0200

    Silence false -Werror=maybe-uninitialized
    
    ...in code recently added with 7e23cbdbb6ec0247a29ed8a8f744c01e10963ea0
    "tdf#149551 separate TextRotateAngle from TextPreRotateAngle", hitting at 
least
    with gcc-c++-12.1.1-1.fc36.x86_64,
    
    > In file included from include/tools/degree.hxx:15,
    >                  from include/vcl/bitmap.hxx:23,
    >                  from include/vcl/alpha.hxx:28,
    >                  from include/vcl/bitmapex.hxx:24,
    >                  from include/vcl/graph.hxx:26,
    >                  from include/oox/export/drawingml.hxx:47,
    >                  from oox/source/export/drawingml.cxx:26:
    > In function ‘o3tl::strong_int<UT, PT> o3tl::operator+(const 
strong_int<UT, PT>&, const strong_int<UT, PT>&) [with UT = int; PT = 
FractionTag<100>]’,
    >     inlined from ‘void oox::drawingml::DrawingML::WriteText(const 
com::sun::star::uno::Reference<com::sun::star::uno::XInterface>&, bool, bool, 
sal_Int32, bool)’ at oox/source/export/drawingml.cxx:3520:33:
    > include/o3tl/strong_int.hxx:143:12: error: ‘*(const o3tl::strong_int<int, 
FractionTag<100> >*)((char*)&nTextRotateAngleDeg100 + 
offsetof(std::optional<o3tl::strong_int<int, FractionTag<100> > 
>,std::optional<o3tl::strong_int<int, FractionTag<100> > 
>::<unnamed>.std::_Optional_base<o3tl::strong_int<int, FractionTag<100> >, 
true, true>::<unnamed>)).o3tl::strong_int<int, FractionTag<100> >::m_value’ may 
be used uninitialized [-Werror=maybe-uninitialized]
    >   143 |     return strong_int<UT,PT>(lhs.get() + rhs.get());
    >       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    > oox/source/export/drawingml.cxx: In member function ‘void 
oox::drawingml::DrawingML::WriteText(const 
com::sun::star::uno::Reference<com::sun::star::uno::XInterface>&, bool, bool, 
sal_Int32, bool)’:
    > oox/source/export/drawingml.cxx:3346:30: note: ‘*(const 
o3tl::strong_int<int, FractionTag<100> >*)((char*)&nTextRotateAngleDeg100 + 
offsetof(std::optional<o3tl::strong_int<int, FractionTag<100> > 
>,std::optional<o3tl::strong_int<int, FractionTag<100> > 
>::<unnamed>.std::_Optional_base<o3tl::strong_int<int, FractionTag<100> >, 
true, true>::<unnamed>)).o3tl::strong_int<int, FractionTag<100> >::m_value’ was 
declared here
    >  3346 |     std::optional<Degree100> nTextRotateAngleDeg100; // text area 
rotation
    >       |                              ^~~~~~~~~~~~~~~~~~~~~~
    
    and then
    
    > In file included from include/oox/export/drawingml.hxx:38,
    >                  from oox/source/export/drawingml.cxx:26:
    > In function ‘rtl::OString oox::drawingml::calcRotationValue(sal_Int32)’,
    >     inlined from ‘void oox::drawingml::DrawingML::WriteText(const 
com::sun::star::uno::Reference<com::sun::star::uno::XInterface>&, bool, bool, 
sal_Int32, bool)’ at oox/source/export/drawingml.cxx:3551:48:
    > include/oox/drawingml/drawingmltypes.hxx:168:19: error: ‘*(const 
o3tl::strong_int<int, FractionTag<100> >*)((char*)&nTextRotateAngleDeg100 + 
offsetof(std::optional<o3tl::strong_int<int, FractionTag<100> > 
>,std::optional<o3tl::strong_int<int, FractionTag<100> > 
>::<unnamed>.std::_Optional_base<o3tl::strong_int<int, FractionTag<100> >, 
true, true>::<unnamed>)).o3tl::strong_int<int, FractionTag<100> >::m_value’ may 
be used uninitialized [-Werror=maybe-uninitialized]
    >   168 |         nRotation -= 36000;
    >       |         ~~~~~~~~~~^~~~~~~~
    > oox/source/export/drawingml.cxx: In member function ‘void 
oox::drawingml::DrawingML::WriteText(const 
com::sun::star::uno::Reference<com::sun::star::uno::XInterface>&, bool, bool, 
sal_Int32, bool)’:
    > oox/source/export/drawingml.cxx:3346:30: note: ‘*(const 
o3tl::strong_int<int, FractionTag<100> >*)((char*)&nTextRotateAngleDeg100 + 
offsetof(std::optional<o3tl::strong_int<int, FractionTag<100> > 
>,std::optional<o3tl::strong_int<int, FractionTag<100> > 
>::<unnamed>.std::_Optional_base<o3tl::strong_int<int, FractionTag<100> >, 
true, true>::<unnamed>)).o3tl::strong_int<int, FractionTag<100> >::m_value’ was 
declared here
    >  3346 |     std::optional<Degree100> nTextRotateAngleDeg100; // text area 
rotation
    >       |                              ^~~~~~~~~~~~~~~~~~~~~~
    
    Change-Id: Id0bf911ada8f8d7343e9c51107776e303ed72a25
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137779
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 63a5d22dd222..0f3008bc3482 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -3516,8 +3516,15 @@ void DrawingML::WriteText(const Reference<XInterface>& 
rXIface, bool bBodyPr, bo
         }
         else if (nTextPreRotateAngle == -180 || nTextPreRotateAngle == 180)
         {
+#if defined __GNUC__ && !defined __clang__ && __GNUC__ == 12
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
             nTextRotateAngleDeg100
                 = NormAngle18000(nTextRotateAngleDeg100.value_or(0_deg100) + 
18000_deg100);
+#if defined __GNUC__ && !defined __clang__ && __GNUC__ == 12
+#pragma GCC diagnostic pop
+#endif
             // ToDo: Examine insets. They might need rotation too.
         }
         else
@@ -3540,8 +3547,15 @@ void DrawingML::WriteText(const Reference<XInterface>& 
rXIface, bool bBodyPr, bo
 
     std::optional<OString> sTextRotateAngleMSUnit;
     if (nTextRotateAngleDeg100.has_value())
+#if defined __GNUC__ && !defined __clang__ && __GNUC__ == 12
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
         sTextRotateAngleMSUnit
             = 
oox::drawingml::calcRotationValue(nTextRotateAngleDeg100.value().get());
+#if defined __GNUC__ && !defined __clang__ && __GNUC__ == 12
+#pragma GCC diagnostic pop
+#endif
 
     TextHorizontalAdjust eHorizontalAlignment( TextHorizontalAdjust_CENTER );
     bool bHorizontalCenter = false;

Reply via email to