[Libreoffice-commits] core.git: sc/source
Stephan Bergmann (via logerrit)
logerrit at kemper.freedesktop.org
Sat May 4 11:41:14 UTC 2019
sc/source/filter/excel/xeformula.cxx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
New commits:
commit dec6bb217dd3ae98bee8e48fab9f8e26b7645b2b
Author: Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Fri May 3 21:19:27 2019 +0200
Commit: Stephan Bergmann <sbergman at redhat.com>
CommitDate: Sat May 4 13:40:38 2019 +0200
Don't truncate SCROW (aka sal_Int32) to sal_Int16
This looks like it was forgotten when changing other types to sal_[u]Int32 in
6bda3610fe27a654ccb99d2f947260e0de353c2c "Fixed binary import/export of
formulas", and now started to cause a
-fsanitize=implicit-signed-integer-truncation failure during
CppunitTest_sc_subsequent_export_test:
> sc/source/filter/excel/xeformula.cxx:1878:32: runtime error: implicit conversion from type 'sal_Int32' (aka 'int') of value 1048575 (32-bit, signed) to type 'sal_Int16' (aka 'short') changed the value to -1 (16-bit, signed)
> #0 in XclExpFmlaCompImpl::ConvertRefData(ScSingleRefData&, XclAddress&, bool, bool, bool) const at sc/source/filter/excel/xeformula.cxx:1878:32 (instdir/program/libscfiltlo.so +0x3c936f4)
> #1 in XclExpFmlaCompImpl::ConvertRefData(ScComplexRefData&, XclRange&, bool) const at sc/source/filter/excel/xeformula.cxx:1905:5 (instdir/program/libscfiltlo.so +0x3c944ee)
> #2 in XclExpFmlaCompImpl::ProcessRangeRef((anonymous namespace)::XclExpScToken const&) at sc/source/filter/excel/xeformula.cxx:1981:5 (instdir/program/libscfiltlo.so +0x3ccba48)
> #3 in XclExpFmlaCompImpl::Factor((anonymous namespace)::XclExpScToken) at sc/source/filter/excel/xeformula.cxx:1152:37 (instdir/program/libscfiltlo.so +0x3cc6f6c)
> #4 in XclExpFmlaCompImpl::RangeTerm((anonymous namespace)::XclExpScToken, bool&) at sc/source/filter/excel/xeformula.cxx:1130:16 (instdir/program/libscfiltlo.so +0x3cc5d18)
> #5 in XclExpFmlaCompImpl::IntersectTerm((anonymous namespace)::XclExpScToken, bool&) at sc/source/filter/excel/xeformula.cxx:1116:16 (instdir/program/libscfiltlo.so +0x3cc453d)
> #6 in XclExpFmlaCompImpl::ListTerm((anonymous namespace)::XclExpScToken, bool) at sc/source/filter/excel/xeformula.cxx:1087:16 (instdir/program/libscfiltlo.so +0x3cc2b6f)
> #7 in XclExpFmlaCompImpl::UnaryPreTerm((anonymous namespace)::XclExpScToken, bool) at sc/source/filter/excel/xeformula.cxx:1077:20 (instdir/program/libscfiltlo.so +0x3cc23a0)
> #8 in XclExpFmlaCompImpl::UnaryPostTerm((anonymous namespace)::XclExpScToken, bool) at sc/source/filter/excel/xeformula.cxx:1056:16 (instdir/program/libscfiltlo.so +0x3cc121d)
> #9 in XclExpFmlaCompImpl::PowTerm((anonymous namespace)::XclExpScToken, bool) at sc/source/filter/excel/xeformula.cxx:1043:16 (instdir/program/libscfiltlo.so +0x3cc0498)
> #10 in XclExpFmlaCompImpl::MulDivTerm((anonymous namespace)::XclExpScToken, bool) at sc/source/filter/excel/xeformula.cxx:1030:16 (instdir/program/libscfiltlo.so +0x3cbf6e8)
> #11 in XclExpFmlaCompImpl::AddSubTerm((anonymous namespace)::XclExpScToken, bool) at sc/source/filter/excel/xeformula.cxx:1017:16 (instdir/program/libscfiltlo.so +0x3cbe968)
> #12 in XclExpFmlaCompImpl::ConcatTerm((anonymous namespace)::XclExpScToken, bool) at sc/source/filter/excel/xeformula.cxx:1004:16 (instdir/program/libscfiltlo.so +0x3cbdb98)
> #13 in XclExpFmlaCompImpl::CompareTerm((anonymous namespace)::XclExpScToken, bool) at sc/source/filter/excel/xeformula.cxx:991:16 (instdir/program/libscfiltlo.so +0x3cbce58)
> #14 in XclExpFmlaCompImpl::AndTerm((anonymous namespace)::XclExpScToken, bool) at sc/source/filter/excel/xeformula.cxx:974:16 (instdir/program/libscfiltlo.so +0x3cbba08)
> #15 in XclExpFmlaCompImpl::OrTerm((anonymous namespace)::XclExpScToken, bool) at sc/source/filter/excel/xeformula.cxx:957:16 (instdir/program/libscfiltlo.so +0x3cba5b8)
> #16 in XclExpFmlaCompImpl::Expression((anonymous namespace)::XclExpScToken, bool, bool) at sc/source/filter/excel/xeformula.cxx:934:20 (instdir/program/libscfiltlo.so +0x3c83a02)
> #17 in XclExpFmlaCompImpl::CreateFormula(XclFormulaType, ScTokenArray const&, ScAddress const*, std::__debug::vector<XclExpRefLogEntry, std::allocator<XclExpRefLogEntry> >*) at sc/source/filter/excel/xeformula.cxx:505:24 (instdir/program/libscfiltlo.so +0x3c7f2f3)
> #18 in XclExpFormulaCompiler::CreateFormula(XclFormulaType, ScRangeList const&) at sc/source/filter/excel/xeformula.cxx:2644:20 (instdir/program/libscfiltlo.so +0x3ca3801)
> #19 in XclExpNameManager::InsertBuiltInName(char16_t, ScRangeList const&) at sc/source/filter/excel/xename.cxx:790:57 (instdir/program/libscfiltlo.so +0x3ed04ab)
> #20 in XclExpNameManagerImpl::CreateBuiltInNames() at sc/source/filter/excel/xename.cxx:704:34 (instdir/program/libscfiltlo.so +0x3ec1794)
> #21 in XclExpNameManagerImpl::Initialize() at sc/source/filter/excel/xename.cxx:390:5 (instdir/program/libscfiltlo.so +0x3ebf79e)
> #22 in XclExpNameManager::Initialize() at sc/source/filter/excel/xename.cxx:771:13 (instdir/program/libscfiltlo.so +0x3ed1003)
> #23 in XclExpRoot::InitializeGlobals() at sc/source/filter/excel/xeroot.cxx:260:22 (instdir/program/libscfiltlo.so +0x416962b)
> #24 in ExcTable::FillAsHeaderXml(XclExpRecordList<ExcBundlesheetBase>&) at sc/source/filter/excel/excdoc.cxx:321:5 (instdir/program/libscfiltlo.so +0x3528545)
> #25 in ExcDocument::ReadDoc() at sc/source/filter/excel/excdoc.cxx:725:17 (instdir/program/libscfiltlo.so +0x35414f7)
> #26 in XclExpXmlStream::exportDocument() at sc/source/filter/excel/xestream.cxx:1106:18 (instdir/program/libscfiltlo.so +0x41ac136)
> #27 in oox::core::FilterBase::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at oox/source/core/filterbase.cxx:497:55 (instdir/program/libooxlo.so +0x2b35d6c)
> #28 in oox::xls::ExcelFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sc/source/filter/oox/excelfilter.cxx:238:27 (instdir/program/libscfiltlo.so +0x541148b)
> #29 in SfxObjectShell::ExportTo(SfxMedium&) at sfx2/source/doc/objstor.cxx:2422:25 (instdir/program/libsfxlo.so +0x4b991c3)
> #30 in SfxObjectShell::SaveTo_Impl(SfxMedium&, SfxItemSet const*) at sfx2/source/doc/objstor.cxx:1513:19 (instdir/program/libsfxlo.so +0x4b88f48)
> #31 in SfxObjectShell::DoSaveAs(SfxMedium&) at sfx2/source/doc/objstor.cxx:1892:17 (instdir/program/libsfxlo.so +0x4b9b44e)
> #32 in ScBootstrapFixture::saveAndReload(ScDocShell*, rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, SfxFilterFlags) at sc/qa/unit/helper/qahelper.cxx:671:13 (workdir/LinkTarget/CppunitTest/../Library/libscqahelper.so +0x916a2)
> #33 in ScBootstrapFixture::saveAndReload(ScDocShell*, int) at sc/qa/unit/helper/qahelper.cxx:693:28 (workdir/LinkTarget/CppunitTest/../Library/libscqahelper.so +0x939bf)
> #34 in ScExportTest::testTdf112567() at sc/qa/unit/subsequent_export-test.cxx:4219:28 (workdir/LinkTarget/CppunitTest/libtest_sc_subsequent_export_test.so +0x2c0836)
Change-Id: I37582410068f2730d6f8dd0872b19fdfa8836c5c
Reviewed-on: https://gerrit.libreoffice.org/71766
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
diff --git a/sc/source/filter/excel/xeformula.cxx b/sc/source/filter/excel/xeformula.cxx
index b903e4891610..cbc1ec652890 100644
--- a/sc/source/filter/excel/xeformula.cxx
+++ b/sc/source/filter/excel/xeformula.cxx
@@ -1874,8 +1874,8 @@ void XclExpFmlaCompImpl::ConvertRefData(
sal_Int16 nXclRelCol = static_cast<sal_Int16>(rRefData.Col());
rXclPos.mnCol = static_cast< sal_uInt16 >( nXclRelCol ) & mnMaxColMask;
- // convert row index (2-step-cast ScsROW->sal_Int16->sal_uInt16 to get all bits correctly)
- sal_Int16 nXclRelRow = static_cast<sal_Int32>(rRefData.Row());
+ // convert row index (2-step-cast ScsROW->sal_Int32->sal_uInt32 to get all bits correctly)
+ sal_Int32 nXclRelRow = static_cast<sal_Int32>(rRefData.Row());
rXclPos.mnRow = static_cast< sal_uInt32 >( nXclRelRow ) & mnMaxRowMask;
}
More information about the Libreoffice-commits
mailing list