vcl/source/pdf/pdfwriter_impl.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
New commits: commit 77c68786670371e5302fdbf6bd7a9f07ddf79845 Author: Stephan Bergmann <[email protected]> AuthorDate: Sun Oct 5 22:18:16 2025 +0200 Commit: Stephan Bergmann <[email protected]> CommitDate: Mon Oct 6 08:26:12 2025 +0200 Avoid UBSan signed-integer-overflow ...by reverting the part of acf75a9b261d4ac2211abffd5a1ba1656d08e46b "Drop some unnecessary explicit casts" that started to make CppunitTest_vcl_pdfexport2 fail with > /workdir/UnpackedTarball/boost/boost/rational.hpp:604:22: runtime error: signed integer overflow: 350932797 * 10 cannot be represented in type 'int' > #0 0x7f56315d94f1 in boost::rational<int>::operator/=(boost::rational<int> const&) /workdir/UnpackedTarball/boost/boost/rational.hpp:604:22 > #1 0x7f56315d12dd in Fraction::operator/=(Fraction const&) /tools/source/generic/fract.cxx:239:7 > #2 0x7f56315d40e8 in operator/(Fraction const&, Fraction const&) /tools/source/generic/fract.cxx:335:10 > #3 0x7f5626bafc3f in vcl::PDFWriterImpl::drawLayout(SalLayout&, rtl::OUString const&, bool) /vcl/source/pdf/pdfwriter_impl.cxx:6767:69 > #4 0x7f5626bcc194 in vcl::PDFWriterImpl::drawTextArray(Point const&, rtl::OUString const&, std::span<double const, 18446744073709551615ul>, std::span<unsigned char const, 18446744073709551615ul>, int, int, int, int) /vcl/source/pdf/pdfwriter_impl.cxx:7269:9 > #5 0x7f5626a30fdd in vcl::PDFWriter::DrawTextArray(Point const&, rtl::OUString const&, std::span<double const, 18446744073709551615ul>, std::span<unsigned char const, 18446744073709551615ul>, int, int, int, int) /vcl/source/pdf/pdfwriter.cxx:87:22 > #6 0x7f5626a58a6f in vcl::PDFWriterImpl::playMetafile(GDIMetaFile const&, vcl::PDFExtOutDevData*, vcl::PDFWriter::PlayMetafileContext const&, VirtualDevice*) /vcl/source/pdf/pdfwriter_impl2.cxx:821:34 > #7 0x7f5626a3a9a5 in vcl::PDFWriter::PlayMetafile(GDIMetaFile const&, vcl::PDFWriter::PlayMetafileContext const&, vcl::PDFExtOutDevData*) /vcl/source/pdf/pdfwriter.cxx:474:22 > #8 0x7f5599ef9e75 in PDFExport::ImplExportPage(vcl::PDFWriter&, vcl::PDFExtOutDevData&, GDIMetaFile const&) /filter/source/pdf/pdfexport.cxx:1333:13 > #9 0x7f5599ef807c in PDFExport::ExportSelection(vcl::PDFWriter&, com::sun::star::uno::Reference<com::sun::star::view::XRenderable> const&, com::sun::star::uno::Any const&, StringRangeEnumerator const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>&, int) /filter/source/pdf/pdfexport.cxx:212:25 > #10 0x7f5599f11329 in PDFExport::Export(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /filter/source/pdf/pdfexport.cxx:1180:28 > #11 0x7f5599f86342 in PDFFilter::implExport(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /filter/source/pdf/pdffilter.cxx:182:24 > #12 0x7f5599f87093 in PDFFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /filter/source/pdf/pdffilter.cxx:247:23 > #13 0x7f55df8d3f26 in SfxObjectShell::ExportTo(SfxMedium&) /sfx2/source/doc/objstor.cxx:2908:25 > #14 0x7f55df8bf658 in SfxObjectShell::SaveTo_Impl(SfxMedium&, SfxItemSet const*) /sfx2/source/doc/objstor.cxx:1929:19 > #15 0x7f55df8fbf63 in SfxObjectShell::PreDoSaveAs_Impl(rtl::OUString const&, rtl::OUString const&, SfxItemSet const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/doc/objstor.cxx:3421:39 > #16 0x7f55df8f383c in SfxObjectShell::CommonSaveAs_Impl(INetURLObject const&, rtl::OUString const&, SfxItemSet&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/doc/objstor.cxx:3212:9 > #17 0x7f55df82ca66 in SfxObjectShell::APISaveAs_Impl(std::basic_string_view<char16_t, std::char_traits<char16_t> >, SfxItemSet&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/doc/objserv.cxx:323:19 > #18 0x7f55dfb19501 in SfxBaseModel::impl_store(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, bool) /sfx2/source/doc/sfxbasemodel.cxx:3253:42 > #19 0x7f55dfb20834 in SfxBaseModel::storeToURL(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/doc/sfxbasemodel.cxx:1834:13 > #20 0x7f5603982e5a in UnoApiTest::saveWithParams(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /test/source/unoapi_test.cxx:194:16 > #21 0x7f5604ee9776 in (anonymous namespace)::PdfExportTest2::saveAsPDF(std::basic_string_view<char16_t, std::char_traits<char16_t> >) /vcl/qa/cppunit/pdfexport/pdfexport2.cxx:76:5 > #22 0x7f560518fa16 in (anonymous namespace)::testTdf145873::TestBody() /vcl/qa/cppunit/pdfexport/pdfexport2.cxx:4171:5 (<https://ci.libreoffice.org/job/lo_ubsan/3685/>) Change-Id: I607d1b66bdae9cece0102a99ef817864b3d27877 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191928 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <[email protected]> diff --git a/vcl/source/pdf/pdfwriter_impl.cxx b/vcl/source/pdf/pdfwriter_impl.cxx index 90b6c08440dd..c277e0d48d37 100644 --- a/vcl/source/pdf/pdfwriter_impl.cxx +++ b/vcl/source/pdf/pdfwriter_impl.cxx @@ -6764,7 +6764,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool // if the mapmode is distorted we need to adjust for that also if( m_aCurrentPDFState.m_aMapMode.GetScaleX() != m_aCurrentPDFState.m_aMapMode.GetScaleY() ) { - fXScale *= double(m_aCurrentPDFState.m_aMapMode.GetScaleX() / m_aCurrentPDFState.m_aMapMode.GetScaleY()); + fXScale *= double(m_aCurrentPDFState.m_aMapMode.GetScaleX()) / double(m_aCurrentPDFState.m_aMapMode.GetScaleY()); } Degree10 nAngle = m_aCurrentPDFState.m_aFont.GetOrientation();
