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 _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice