New Defects reported by Coverity Scan for LibreOffice
scan-admin at coverity.com
scan-admin at coverity.com
Fri Jun 1 15:55:55 UTC 2018
Hi,
Please find the latest report on new defect(s) introduced to LibreOffice found with Coverity Scan.
12 new defect(s) introduced to LibreOffice found with Coverity Scan.
3 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan.
New defect(s) Reported-by: Coverity Scan
Showing 12 of 12 defect(s)
** CID 1435920: (RESOURCE_LEAK)
/sc/source/core/data/conditio.cxx: 1162 in ScConditionEntry::IsValidStr(const rtl::OUString &, const ScAddress &) const()
/sc/source/core/data/conditio.cxx: 1171 in ScConditionEntry::IsValidStr(const rtl::OUString &, const ScAddress &) const()
/sc/source/core/data/conditio.cxx: 1175 in ScConditionEntry::IsValidStr(const rtl::OUString &, const ScAddress &) const()
/sc/source/core/data/conditio.cxx: 1205 in ScConditionEntry::IsValidStr(const rtl::OUString &, const ScAddress &) const()
/sc/source/core/data/conditio.cxx: 1224 in ScConditionEntry::IsValidStr(const rtl::OUString &, const ScAddress &) const()
________________________________________________________________________________________________________
*** CID 1435920: (RESOURCE_LEAK)
/sc/source/core/data/conditio.cxx: 1162 in ScConditionEntry::IsValidStr(const rtl::OUString &, const ScAddress &) const()
1156 return false;
1157
1158 OUString aUpVal1( aStrVal1 ); //TODO: As a member? (Also set in Interpret)
1159 OUString aUpVal2( aStrVal2 );
1160
1161 if ( eOp == ScConditionMode::Between || eOp == ScConditionMode::NotBetween )
>>> CID 1435920: (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCollator()" leaks it.
1162 if (ScGlobal::GetCollator()->compareString( aUpVal1, aUpVal2 ) > 0)
1163 {
1164 // Right order for value range
1165 OUString aTemp( aUpVal1 ); aUpVal1 = aUpVal2; aUpVal2 = aTemp;
1166 }
1167
/sc/source/core/data/conditio.cxx: 1171 in ScConditionEntry::IsValidStr(const rtl::OUString &, const ScAddress &) const()
1165 OUString aTemp( aUpVal1 ); aUpVal1 = aUpVal2; aUpVal2 = aTemp;
1166 }
1167
1168 switch ( eOp )
1169 {
1170 case ScConditionMode::Equal:
>>> CID 1435920: (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCollator()" leaks it.
1171 bValid = (ScGlobal::GetCollator()->compareString(
1172 rArg, aUpVal1 ) == 0);
1173 break;
1174 case ScConditionMode::NotEqual:
1175 bValid = (ScGlobal::GetCollator()->compareString(
1176 rArg, aUpVal1 ) != 0);
/sc/source/core/data/conditio.cxx: 1175 in ScConditionEntry::IsValidStr(const rtl::OUString &, const ScAddress &) const()
1169 {
1170 case ScConditionMode::Equal:
1171 bValid = (ScGlobal::GetCollator()->compareString(
1172 rArg, aUpVal1 ) == 0);
1173 break;
1174 case ScConditionMode::NotEqual:
>>> CID 1435920: (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCollator()" leaks it.
1175 bValid = (ScGlobal::GetCollator()->compareString(
1176 rArg, aUpVal1 ) != 0);
1177 break;
1178 case ScConditionMode::TopPercent:
1179 case ScConditionMode::BottomPercent:
1180 case ScConditionMode::Top10:
/sc/source/core/data/conditio.cxx: 1205 in ScConditionEntry::IsValidStr(const rtl::OUString &, const ScAddress &) const()
1199 bValid = rArg.indexOf(aUpVal1) != -1;
1200 if(eOp == ScConditionMode::NotContainsText)
1201 bValid = !bValid;
1202 break;
1203 default:
1204 {
>>> CID 1435920: (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCollator()" leaks it.
1205 sal_Int32 nCompare = ScGlobal::GetCollator()->compareString(
1206 rArg, aUpVal1 );
1207 switch ( eOp )
1208 {
1209 case ScConditionMode::Greater:
1210 bValid = ( nCompare > 0 );
/sc/source/core/data/conditio.cxx: 1224 in ScConditionEntry::IsValidStr(const rtl::OUString &, const ScAddress &) const()
1218 case ScConditionMode::EqLess:
1219 bValid = ( nCompare <= 0 );
1220 break;
1221 case ScConditionMode::Between:
1222 case ScConditionMode::NotBetween:
1223 // Test for NOTBETWEEN:
>>> CID 1435920: (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCollator()" leaks it.
1224 bValid = ( nCompare < 0 ||
1225 ScGlobal::GetCollator()->compareString( rArg,
1226 aUpVal2 ) > 0 );
1227 if ( eOp == ScConditionMode::Between )
1228 bValid = !bValid;
1229 break;
** CID 1435919: (RESOURCE_LEAK)
/sc/source/core/data/dociter.cxx: 1702 in ScQueryCellIterator::BinarySearch()()
/sc/source/core/data/dociter.cxx: 1702 in ScQueryCellIterator::BinarySearch()()
________________________________________________________________________________________________________
*** CID 1435919: (RESOURCE_LEAK)
/sc/source/core/data/dociter.cxx: 1702 in ScQueryCellIterator::BinarySearch()()
1696 ++nRow;
1697 }
1698 }
1699
1700 NonEmptyCellIndexer aIndexer(pCol->maCells, nRow, mpParam->nRow2, bAllStringIgnore);
1701 if (!aIndexer.isValid())
>>> CID 1435919: (RESOURCE_LEAK)
>>> Variable "pCollator" going out of scope leaks the storage it points to.
1702 return false;
1703
1704 size_t nLo = aIndexer.getLowIndex();
1705 size_t nHi = aIndexer.getHighIndex();
1706 NonEmptyCellIndexer::CellType aCellData;
1707
/sc/source/core/data/dociter.cxx: 1702 in ScQueryCellIterator::BinarySearch()()
1696 ++nRow;
1697 }
1698 }
1699
1700 NonEmptyCellIndexer aIndexer(pCol->maCells, nRow, mpParam->nRow2, bAllStringIgnore);
1701 if (!aIndexer.isValid())
>>> CID 1435919: (RESOURCE_LEAK)
>>> Variable "pCollator" going out of scope leaks the storage it points to.
1702 return false;
1703
1704 size_t nLo = aIndexer.getLowIndex();
1705 size_t nHi = aIndexer.getHighIndex();
1706 NonEmptyCellIndexer::CellType aCellData;
1707
** CID 1435918: (RESOURCE_LEAK)
/sc/source/core/tool/compare.cxx: 179 in sc::CompareFunc(const sc::Compare &, sc::CompareOptions *)()
/sc/source/core/tool/compare.cxx: 193 in sc::CompareFunc(const sc::Compare &, sc::CompareOptions *)()
________________________________________________________________________________________________________
*** CID 1435918: (RESOURCE_LEAK)
/sc/source/core/tool/compare.cxx: 179 in sc::CompareFunc(const sc::Compare &, sc::CompareOptions *)()
173 fRes = (bMatch ? 0 : 1);
174 }
175 else if (rComp.mbIgnoreCase)
176 fRes = static_cast<double>(ScGlobal::GetCollator()->compareString(
177 rCell1.maStr.getString(), rCell2.maStr.getString()));
178 else
>>> CID 1435918: (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCaseCollator()" leaks it.
179 fRes = static_cast<double>(ScGlobal::GetCaseCollator()->compareString(
180 rCell1.maStr.getString(), rCell2.maStr.getString()));
181 }
182 else if (rComp.meOp == SC_EQUAL || rComp.meOp == SC_NOT_EQUAL)
183 {
184 if (rComp.mbIgnoreCase)
/sc/source/core/tool/compare.cxx: 193 in sc::CompareFunc(const sc::Compare &, sc::CompareOptions *)()
187 fRes = (rCell1.maStr.getData() == rCell2.maStr.getData()) ? 0 : 1;
188 }
189 else if (rComp.mbIgnoreCase)
190 fRes = static_cast<double>(ScGlobal::GetCollator()->compareString(
191 rCell1.maStr.getString(), rCell2.maStr.getString()));
192 else
>>> CID 1435918: (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCaseCollator()" leaks it.
193 fRes = static_cast<double>(ScGlobal::GetCaseCollator()->compareString(
194 rCell1.maStr.getString(), rCell2.maStr.getString()));
195 }
196
197 if (nStringQuery && pOptions)
198 {
** CID 1435917: Resource leaks (RESOURCE_LEAK)
/sc/qa/unit/ucalc.cxx: 166 in Test::testCollator()()
________________________________________________________________________________________________________
*** CID 1435917: Resource leaks (RESOURCE_LEAK)
/sc/qa/unit/ucalc.cxx: 166 in Test::testCollator()()
160
161 void Test::testCollator()
162 {
163 CollatorWrapper* p = ScGlobal::GetCollator();
164 sal_Int32 nRes = p->compareString("A", "B");
165 CPPUNIT_ASSERT_MESSAGE("these strings are supposed to be different!", nRes != 0);
>>> CID 1435917: Resource leaks (RESOURCE_LEAK)
>>> Variable "p" going out of scope leaks the storage it points to.
166 }
167
168 void Test::testSharedStringPool()
169 {
170 m_pDoc->InsertTab(0, "foo");
171
** CID 1435916: Resource leaks (RESOURCE_LEAK)
/sc/source/ui/miscdlgs/acredlin.cxx: 1843 in ScAcceptChgDlg::ColCompareHdl(const SvSortData *)()
________________________________________________________________________________________________________
*** CID 1435916: Resource leaks (RESOURCE_LEAK)
/sc/source/ui/miscdlgs/acredlin.cxx: 1843 in ScAcceptChgDlg::ColCompareHdl(const SvSortData *)()
1837 SvLBoxItemType nLeftKind = pLeftItem->GetType();
1838 SvLBoxItemType nRightKind = pRightItem->GetType();
1839
1840 if (nRightKind == SvLBoxItemType::String &&
1841 nLeftKind == SvLBoxItemType::String)
1842 {
>>> CID 1435916: Resource leaks (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCaseCollator()" leaks it.
1843 nCompare = ScGlobal::GetCaseCollator()->compareString(
1844 static_cast<SvLBoxString*>(pLeftItem)->GetText(),
1845 static_cast<SvLBoxString*>(pRightItem)->GetText());
1846 }
1847 }
1848
** CID 1435915: (RESOURCE_LEAK)
/sc/source/core/tool/rangelst.cxx: 1314 in ScRangePairList_sortNameCompare::operator ()(const ScRangePair *, const ScRangePair *) const()
/sc/source/core/tool/rangelst.cxx: 1345 in ScRangePairList_sortNameCompare::operator ()(const ScRangePair *, const ScRangePair *) const()
________________________________________________________________________________________________________
*** CID 1435915: (RESOURCE_LEAK)
/sc/source/core/tool/rangelst.cxx: 1314 in ScRangePairList_sortNameCompare::operator ()(const ScRangePair *, const ScRangePair *) const()
1308 if ( rStartPos1.Tab() == rStartPos2.Tab() )
1309 nComp = 0;
1310 else
1311 {
1312 mpDoc->GetName( rStartPos1.Tab(), aStr1 );
1313 mpDoc->GetName( rStartPos2.Tab(), aStr2 );
>>> CID 1435915: (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCollator()" leaks it.
1314 nComp = ScGlobal::GetCollator()->compareString( aStr1, aStr2 );
1315 }
1316 if (nComp < 0)
1317 {
1318 return true; // -1;
1319 }
/sc/source/core/tool/rangelst.cxx: 1345 in ScRangePairList_sortNameCompare::operator ()(const ScRangePair *, const ScRangePair *) const()
1339 if ( rEndPos1.Tab() == rEndPos2.Tab() )
1340 nComp = 0;
1341 else
1342 {
1343 mpDoc->GetName( rEndPos1.Tab(), aStr1 );
1344 mpDoc->GetName( rEndPos2.Tab(), aStr2 );
>>> CID 1435915: (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCollator()" leaks it.
1345 nComp = ScGlobal::GetCollator()->compareString( aStr1, aStr2 );
1346 }
1347 if (nComp < 0)
1348 {
1349 return true; // -1;
1350 }
** CID 1435914: (RESOURCE_LEAK)
/sc/source/core/tool/compare.cxx: 176 in sc::CompareFunc(const sc::Compare &, sc::CompareOptions *)()
/sc/source/core/tool/compare.cxx: 190 in sc::CompareFunc(const sc::Compare &, sc::CompareOptions *)()
________________________________________________________________________________________________________
*** CID 1435914: (RESOURCE_LEAK)
/sc/source/core/tool/compare.cxx: 176 in sc::CompareFunc(const sc::Compare &, sc::CompareOptions *)()
170 rCell2.maStr.getLength(), nullptr));
171 bMatch = (aCell.indexOf( aQuer ) != -1);
172 }
173 fRes = (bMatch ? 0 : 1);
174 }
175 else if (rComp.mbIgnoreCase)
>>> CID 1435914: (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCollator()" leaks it.
176 fRes = static_cast<double>(ScGlobal::GetCollator()->compareString(
177 rCell1.maStr.getString(), rCell2.maStr.getString()));
178 else
179 fRes = static_cast<double>(ScGlobal::GetCaseCollator()->compareString(
180 rCell1.maStr.getString(), rCell2.maStr.getString()));
181 }
/sc/source/core/tool/compare.cxx: 190 in sc::CompareFunc(const sc::Compare &, sc::CompareOptions *)()
184 if (rComp.mbIgnoreCase)
185 fRes = (rCell1.maStr.getDataIgnoreCase() == rCell2.maStr.getDataIgnoreCase()) ? 0 : 1;
186 else
187 fRes = (rCell1.maStr.getData() == rCell2.maStr.getData()) ? 0 : 1;
188 }
189 else if (rComp.mbIgnoreCase)
>>> CID 1435914: (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCollator()" leaks it.
190 fRes = static_cast<double>(ScGlobal::GetCollator()->compareString(
191 rCell1.maStr.getString(), rCell2.maStr.getString()));
192 else
193 fRes = static_cast<double>(ScGlobal::GetCaseCollator()->compareString(
194 rCell1.maStr.getString(), rCell2.maStr.getString()));
195 }
** CID 1435913: (FORWARD_NULL)
/sd/source/ui/view/sdview.cxx: 702 in sd::View::SdrBeginTextEdit(SdrObject *, SdrPageView *, vcl::Window *, bool, SdrOutliner *, OutlinerView *, bool, bool, bool)()
/sd/source/ui/view/sdview.cxx: 702 in sd::View::SdrBeginTextEdit(SdrObject *, SdrPageView *, vcl::Window *, bool, SdrOutliner *, OutlinerView *, bool, bool, bool)()
________________________________________________________________________________________________________
*** CID 1435913: (FORWARD_NULL)
/sd/source/ui/view/sdview.cxx: 702 in sd::View::SdrBeginTextEdit(SdrObject *, SdrPageView *, vcl::Window *, bool, SdrOutliner *, OutlinerView *, bool, bool, bool)()
696 bOnlyOneView, bGrabFocus);
697
698 if ( mpViewSh )
699 {
700 mpViewSh->GetViewShellBase().GetDrawController().FireSelectionChangeListener();
701
>>> CID 1435913: (FORWARD_NULL)
>>> Passing null pointer "pObj" to "GetObjIdentifier", which dereferences it. (The dereference happens because this is a virtual function call.)
702 if (pObj->GetObjIdentifier() == OBJ_TABLE)
703 mpViewSh->UpdateScrollBars();
704
705 if (comphelper::LibreOfficeKit::isActive())
706 {
707 if (OutlinerView* pView = GetTextEditOutlinerView())
/sd/source/ui/view/sdview.cxx: 702 in sd::View::SdrBeginTextEdit(SdrObject *, SdrPageView *, vcl::Window *, bool, SdrOutliner *, OutlinerView *, bool, bool, bool)()
696 bOnlyOneView, bGrabFocus);
697
698 if ( mpViewSh )
699 {
700 mpViewSh->GetViewShellBase().GetDrawController().FireSelectionChangeListener();
701
>>> CID 1435913: (FORWARD_NULL)
>>> Passing null pointer "pObj" to "GetObjIdentifier", which dereferences it. (The dereference happens because this is a virtual function call.)
702 if (pObj->GetObjIdentifier() == OBJ_TABLE)
703 mpViewSh->UpdateScrollBars();
704
705 if (comphelper::LibreOfficeKit::isActive())
706 {
707 if (OutlinerView* pView = GetTextEditOutlinerView())
** CID 1435912: (RESOURCE_LEAK)
/sc/source/core/data/dpcache.cxx: 884 in ScDPCache::ValidQuery(int, const ScQueryParam &) const()
/sc/source/core/data/dpcache.cxx: 884 in ScDPCache::ValidQuery(int, const ScQueryParam &) const()
________________________________________________________________________________________________________
*** CID 1435912: (RESOURCE_LEAK)
/sc/source/core/data/dpcache.cxx: 884 in ScDPCache::ValidQuery(int, const ScQueryParam &) const()
878 }
879
880 for (long j=1; j <= nPos; j++)
881 aPassed[0] = aPassed[0] || aPassed[j];
882
883 bool bRet = aPassed[0];
>>> CID 1435912: (RESOURCE_LEAK)
>>> Variable "pCollator" going out of scope leaks the storage it points to.
884 return bRet;
885 }
886
887 ScDocument* ScDPCache::GetDoc() const
888 {
889 return mpDoc;
/sc/source/core/data/dpcache.cxx: 884 in ScDPCache::ValidQuery(int, const ScQueryParam &) const()
878 }
879
880 for (long j=1; j <= nPos; j++)
881 aPassed[0] = aPassed[0] || aPassed[j];
882
883 bool bRet = aPassed[0];
>>> CID 1435912: (RESOURCE_LEAK)
>>> Variable "pCollator" going out of scope leaks the storage it points to.
884 return bRet;
885 }
886
887 ScDocument* ScDPCache::GetDoc() const
888 {
889 return mpDoc;
** CID 1435911: API usage errors (SWAPPED_ARGUMENTS)
________________________________________________________________________________________________________
*** CID 1435911: API usage errors (SWAPPED_ARGUMENTS)
/drawinglayer/source/texture/texture3d.cxx: 168 in drawinglayer::texture::GeoTexSvxBitmapEx::modifyOpacity(const basegfx::B2DPoint &, double &) const()
162
163 rfOpacity = 1.0 - ((1.0 - fNewOpacity) * (1.0 - rfOpacity));
164 }
165 else
166 {
167 // this texture is a color bitmap used as transparence map
>>> CID 1435911: API usage errors (SWAPPED_ARGUMENTS)
>>> The positions of arguments in the call to "GetPixelColor" do not match the ordering of the parameters:
* "nY" is passed to "nX"
* "nX" is passed to "nY"
168 const ::Color aColor(maBitmapEx.GetPixelColor(nY, nX));
169
170 rfOpacity = (static_cast<double>(0xff - aColor.GetLuminance()) * (1.0 / 255.0));
171 }
172 }
173 else
** CID 1435910: Resource leaks (RESOURCE_LEAK)
/sc/source/core/tool/interpr1.cxx: 6509 in ScInterpreter::ScLookup()()
________________________________________________________________________________________________________
*** CID 1435910: Resource leaks (RESOURCE_LEAK)
/sc/source/core/tool/interpr1.cxx: 6509 in ScInterpreter::ScLookup()()
6503 }
6504 else
6505 {
6506 if (rItem.meType != ScQueryEntry::ByString)
6507 bFound = false;
6508 else
>>> CID 1435910: Resource leaks (RESOURCE_LEAK)
>>> Failing to save or free storage allocated by "ScGlobal::GetCollator()" leaks it.
6509 bFound = (ScGlobal::GetCollator()->compareString(aDataStr.getString(), rItem.maString.getString()) <= 0);
6510 }
6511
6512 if (!bFound)
6513 {
6514 PushNA();
** CID 1435909: (RESOURCE_LEAK)
/sc/source/core/data/dociter.cxx: 738 in ScDBQueryDataIterator::DataAccessMatrix::isValidQuery(int, const ScMatrix &) const()
/sc/source/core/data/dociter.cxx: 740 in ScDBQueryDataIterator::DataAccessMatrix::isValidQuery(int, const ScMatrix &) const()
/sc/source/core/data/dociter.cxx: 738 in ScDBQueryDataIterator::DataAccessMatrix::isValidQuery(int, const ScMatrix &) const()
/sc/source/core/data/dociter.cxx: 740 in ScDBQueryDataIterator::DataAccessMatrix::isValidQuery(int, const ScMatrix &) const()
________________________________________________________________________________________________________
*** CID 1435909: (RESOURCE_LEAK)
/sc/source/core/data/dociter.cxx: 738 in ScDBQueryDataIterator::DataAccessMatrix::isValidQuery(int, const ScMatrix &) const()
732 }
733
734 // Row is valid as long as there is at least one result being true.
735 vector<bool>::const_iterator itr = aResults.begin(), itrEnd = aResults.end();
736 for (; itr != itrEnd; ++itr)
737 if (*itr)
>>> CID 1435909: (RESOURCE_LEAK)
>>> Variable "rCollator" going out of scope leaks the storage it points to.
738 return true;
739
740 return false;
741 }
742
743 ScDBQueryDataIterator::Value::Value() :
/sc/source/core/data/dociter.cxx: 740 in ScDBQueryDataIterator::DataAccessMatrix::isValidQuery(int, const ScMatrix &) const()
734 // Row is valid as long as there is at least one result being true.
735 vector<bool>::const_iterator itr = aResults.begin(), itrEnd = aResults.end();
736 for (; itr != itrEnd; ++itr)
737 if (*itr)
738 return true;
739
>>> CID 1435909: (RESOURCE_LEAK)
>>> Variable "rCollator" going out of scope leaks the storage it points to.
740 return false;
741 }
742
743 ScDBQueryDataIterator::Value::Value() :
744 mnError(FormulaError::NONE), mbIsNumber(true)
745 {
/sc/source/core/data/dociter.cxx: 738 in ScDBQueryDataIterator::DataAccessMatrix::isValidQuery(int, const ScMatrix &) const()
732 }
733
734 // Row is valid as long as there is at least one result being true.
735 vector<bool>::const_iterator itr = aResults.begin(), itrEnd = aResults.end();
736 for (; itr != itrEnd; ++itr)
737 if (*itr)
>>> CID 1435909: (RESOURCE_LEAK)
>>> Variable "rCollator" going out of scope leaks the storage it points to.
738 return true;
739
740 return false;
741 }
742
743 ScDBQueryDataIterator::Value::Value() :
/sc/source/core/data/dociter.cxx: 740 in ScDBQueryDataIterator::DataAccessMatrix::isValidQuery(int, const ScMatrix &) const()
734 // Row is valid as long as there is at least one result being true.
735 vector<bool>::const_iterator itr = aResults.begin(), itrEnd = aResults.end();
736 for (; itr != itrEnd; ++itr)
737 if (*itr)
738 return true;
739
>>> CID 1435909: (RESOURCE_LEAK)
>>> Variable "rCollator" going out of scope leaks the storage it points to.
740 return false;
741 }
742
743 ScDBQueryDataIterator::Value::Value() :
744 mnError(FormulaError::NONE), mbIsNumber(true)
745 {
________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRZBnDJeNb0HijxaS4JNJPxk3kpyAm2AYqo71yXmnOxB72ibeUH-2F-2F1Lhi9AZq3dRu-2F4-3D_g-2BrHdvqzaBa155F-2F8AmPhpJzY63UzWDisJV95WUBpGhqFw1ICExHG8aMaV2EoFpyV89HAOLKnLItfOGqkcwzRf1CUCGclvb7B5tZ0ywsle3IbAW74WOrb3qA4tjx9f6sF3KkFa5ok45no17Gv1bsKb-2FzyNiM3Re-2Ba6y1byqbolqQ0lceUXpNDdjpd6mLYLrpuUH22sDZA9GtYYzGX90-2BoH-2BpEood9GDpYSfZWOKt3XM-3D
More information about the LibreOffice
mailing list