summaryrefslogtreecommitdiff
path: root/include/unotools
AgeCommit message (Collapse)AuthorFilesLines
2018-10-09Related: tdf#83128 support translation of plural formsCaolán McNamara1-0/+1
Change-Id: Id3d41099a895ca5423be2ac3d497851bc65eaff7 Reviewed-on: https://gerrit.libreoffice.org/61426 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-10-02Silence new Clang trunk -Wdefaulted-function-deletedStephan Bergmann1-2/+2
This mostly affects explicitly defaulted functions that had recently been user- declared to silence new GCC trunk -Wdeprecated-copy. It is not entirely clear to me what the best approach is overall, see my mail <http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20181001/245321.html> "Re: r343285 - [cxx2a] P0641R2: (Some) type mismatches on defaulted functions only", but lets just explicitly delete those functions for now. Change-Id: If8c72f612f67a8feb8b03c2fb988c807e704ef03 Reviewed-on: https://gerrit.libreoffice.org/61259 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-10-01Consistently have both copy functions for utl::ConfigurationBroadcasterStephan Bergmann1-0/+1
The ctor was added with d1e47b1428abf1732ab4d5e219b210760d4152e0 "enhance useuniqueptr loplugin" apparently because it was needed and the implicitly declared one stareted to be defined as deleted, while the assignment op was left implicitly defined as deleted (presumably because it wasn't needed anyway). Adding a non-deleted definition of the assignment op probably is a good move towards consistency, and was assumed it could help avoid new Clang trunk -Werror,-Wdefaulted-function-deleted in derived ConfigItem (include/unotools/configitem.hxx), but which appears not to be the case. And ConfigurationBroadcaster can't easily switch from copy to move semantics, as SdOptionsLayoutItem::Clone needs SdOptionsLayoutItem copy ctor needs SdOptionsLayout copy ctor needs SdOptionsGeneric copy ctor needs SdOptionsItem copy ctor needs utl::ConfigItem copy ctor needs utl::ConfigurationBroadcaster copy ctor. Change-Id: Ie1f4e72eacb9b6b776103c4cf04a959acfa6648f Reviewed-on: https://gerrit.libreoffice.org/61208 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-09-19loplugin:constfields in unotools..uuiNoel Grandin6-7/+7
Change-Id: I9d9cfd107bea9556cbc505e977838fb13bd25e2a Reviewed-on: https://gerrit.libreoffice.org/60573 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-31tdf#42949 Fix IWYU warnings: boost/optional in include/Gabor Kelemen1-1/+2
Found with bin/find-unneeded-includes a few low hanging boost/optional headers. This gets us about 75M includebloat reduction; still much to go Change-Id: I5c737631767970f9145609aad298a5d11e3fed65 Reviewed-on: https://gerrit.libreoffice.org/59840 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
2018-08-13short-circuit IsFuzzing when FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION definedCaolán McNamara1-0/+4
Change-Id: Ib82daad19185de3d271adee3cdb6d39a35e9c082 Reviewed-on: https://gerrit.libreoffice.org/58941 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-07-27unotools: avoid -Werror=deprecated-copy (GCC trunk towards GCC 9)Stephan Bergmann4-7/+5
...by explicitly defaulting the copy/move functions (and, where needed in turn, also a default ctor) for classes that have a user-declared dtor that does nothing other than an implicitly-defined one would do, but needs to be user- declared because it is virtual and potentially serves as a key function to emit the vtable, or is non-public, etc.; and by removing explicitly user- provided functions that do the same as their implicitly-defined counterparts, but may prevent implicitly declared copy functions from being defined as non- deleted in the future. (Even if such a user-provided function was declared non-inline in an include file, the apparently-used implicitly-defined copy functions are already include, so why bother with non-inline functions.) Change-Id: Iaa08ef916a2d266e011a2cb66592b377cb1eb23c Reviewed-on: https://gerrit.libreoffice.org/58095 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-07-26loplugin:returnconstant in tools,comphelper,unotoolsNoel Grandin1-1/+1
Change-Id: Iabc3c67b4cdcd0344a37c533bf92dd00cd4700d8 Reviewed-on: https://gerrit.libreoffice.org/57974 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-07-23Fix typosAndrea Gelmini2-2/+2
Change-Id: Id7d0de124c4b9006db8c28e5cebb3ba38b0143ee Reviewed-on: https://gerrit.libreoffice.org/57602 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2018-07-10pass SvStream around by std::unique_ptrNoel Grandin2-7/+11
and give utl::OStreamWrapper a new constructor so that it knows it is taking ownership of the SvStream, which appears to fix several leaks Change-Id: Idcbcca9b81a4f0345fd8b8c8a2f4e84213686a6b Reviewed-on: https://gerrit.libreoffice.org/57187 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-06-08tdf#115007: Use [NatNum12 params...] syntaxMike Kaganski1-3/+9
This allows using all the libnumbertext library functions. [NatNum12] gives cardinal number names (one, two, three, ...) [NatNum12 ordinal] gives ordinal number names (first, second, third, ...) [NatNum12 ordinal-number] gives ordinal indicators (1st, 2nd, 3rd, ...) [NatNum12 money USD][$-409] gives formal English (US) money text ... etc (see numbertext.org for syntax). Change-Id: I16dbb44d8d4bdb82a1b950de6d438c8311b554ff Reviewed-on: https://gerrit.libreoffice.org/54366 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: László Németh <nemeth@numbertext.org>
2018-06-06enable incremental linking on windowsNoel Grandin1-3/+3
requires a handful of workarounds Change-Id: I77c25580135eeec437716eceea1412607f8d14ca Reviewed-on: https://gerrit.libreoffice.org/55244 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-06-05tdf#42949 remove unused compheler includes ..Jochen Nitschke2-2/+0
and fix the fallout Change-Id: I15bc5d626f4d157cbc69a87392078b41e621d14e Reviewed-on: https://gerrit.libreoffice.org/54882 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
2018-05-28loplugin:unusedmethodsNoel Grandin1-10/+0
Change-Id: I64df1f467986b3d70c058adff289a6dd8f00fb20 Reviewed-on: https://gerrit.libreoffice.org/54821 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-05-20tdf#35798: Hide empty Database fields' paragraphs (+ compat option)Mike Kaganski1-0/+1
With this change, Database fields that expand to empty values behave as if they are "Hidden Paragraph" fields. A compatibility option to enable this behaviour is added. The option is enabled by default, and for any non-native documents (for compatibility with other office suites). For existing (F)ODT documents, the option is disabled for those documents that don't have this setting set, to keep the layout of legacy documents. Change-Id: Ic5e8cb15a3a7d1a765a984eef4b0d97666df7dfd Reviewed-on: https://gerrit.libreoffice.org/54552 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2018-05-03tdf#117171 support localized number name numbering stylesLászló Németh1-0/+2
in page number, chapter and outline numbering in ~30 languages by integrating libnumbertext library. - offapi: add linguistic2::NumberText New NumberingType constants: - ordinal indicators (1st, 2nd, 3rd...) - cardinal number names (One, Two, Three...) - ordinal number names (First, Second, Third...) Note: these numberings are parts of OOXML, too. Plain text files of Libnumbertext's language data are installed in share/numbertext (similar to share/fingerprint), allowing further customization. Change-Id: I4034da0a40a8c926f14a3f591749a89a8d807d5a Reviewed-on: https://gerrit.libreoffice.org/53313 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: László Németh <nemeth@numbertext.org>
2018-04-26identify tab pages by name for save/storing active tabCaolán McNamara1-2/+2
Change-Id: Id66f8ff62ed08724702572f457b9fc857d567e89 Reviewed-on: https://gerrit.libreoffice.org/53465 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-04-25Revert "make UcbStreamHelper return SvStream by std::unique_ptr"Noel Grandin1-8/+7
This reverts commit eeefb8c440b514cefdc4e82cc06843da9eabeb13. this was pushed in error
2018-04-25make UcbStreamHelper return SvStream by std::unique_ptrNoel Grandin1-7/+8
Change-Id: I408f9193680ea73c61fcfb2bd1e860152219702c
2018-03-08loplugin:constantparam in svtools..unotoolsNoel Grandin1-2/+1
Change-Id: I6e72fbe44dcb65ee5162448e9a72e6437d56b044 Reviewed-on: https://gerrit.libreoffice.org/50948 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-02-05tdf#108523 Removed @author annotations.Manuj Vashist2-6/+0
Change-Id: I6a60128c413beab6cabb857c073607e15ddbc98f Reviewed-on: https://gerrit.libreoffice.org/49215 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-02-01Fix typosAndrea Gelmini5-5/+5
Change-Id: I455efa82de60b764a500e1cc092ae08e800ec824 Reviewed-on: https://gerrit.libreoffice.org/49068 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com>
2018-01-30Typ-o negativIlmari Lauhakangas1-1/+1
Fixed some typos and translated a couple of German words Change-Id: I24ae28dd537ba283a9480413659f85bd6711acad Reviewed-on: https://gerrit.libreoffice.org/48892 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Julien Nabet <serval2412@yahoo.fr>
2018-01-14Fix typosAndrea Gelmini1-1/+1
Change-Id: I2b4988e1d81fe60f7699362480cd739d2620c053 Reviewed-on: https://gerrit.libreoffice.org/47856 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2018-01-11loplugin:useuniqueptr in tools,stoc,unotoolsNoel Grandin2-7/+10
Change-Id: Ia72b65577143623cedc7a40bc34f7fb897add097 Reviewed-on: https://gerrit.libreoffice.org/47726 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-01-04loplugin:unusedfieldsNoel Grandin1-2/+0
fix the ReturnStmt check Change-Id: I95076076bd1313d23798c4615ea12910c86ed9a8 Reviewed-on: https://gerrit.libreoffice.org/47309 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-01-03loplugin:singlevalfields improve copy constructor checkNoel Grandin1-9/+0
Change-Id: Id1e7fbecd9e9f816553d2e678c3f1b7890fc4db8 Reviewed-on: https://gerrit.libreoffice.org/47293 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-12-24loplugin:passstuffbyref even more return improvementsNoel Grandin1-2/+2
Change-Id: I2a752025cd429e4d271626402dce5d8a8b0c76d2 Reviewed-on: https://gerrit.libreoffice.org/47021 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-12-19Read some configuration items directlyStephan Bergmann1-6/+0
...removing them from SvtSaveOptions Change-Id: I922ec0f88872b1f2d99c6a55faad00143d944473 Reviewed-on: https://gerrit.libreoffice.org/46797 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-12-19Don't leak SvtSaveOptions instance through ItemHolder1::holdConfigItemStephan Bergmann1-1/+0
...where ItemHolder1 apparently leaks the items ever since > commit ef2c49c9a5788e35249d8d5406a09c84ecd062ee > Author: Rüdiger Timm <rt@openoffice.org> > Date: Fri Nov 11 07:50:10 2005 +0000 > > INTEGRATION: CWS perform06 (1.6.60); FILE MERGED > 2005/11/07 13:32:40 as 1.6.60.2: #i56589# dont cache GlobalEventConfig() inside ItemHolder1^... combination of static pointer and WeakImplHelper cant not work > 2005/10/25 08:04:02 as 1.6.60.1: #i56589# hold config items alive till office die That started to cause problems when 78a6ce17f06fbe13b806fd563e85a4fe60d3bcfc "DELETEZ->std::unique_ptr in toolkit,unotools" now stopped to leak the global static std::unique_ptr<SvtLoadSaveOptions_Impl> pOptions; in unotools/source/config/saveopt.cxx when any SvtSaveOptions instances are leaked, so that at least PythonTest_pyuno_pytests_testcollections started to fail in ASan builds now when that global pOptions is destroyed at exit. I don't see a good reason for that ItemHolder1::holdConfigItem stuff here, so lets try and drop it from SvtSaveOptions at least. Change-Id: I6d44708fc4e2e5dfafaa9bfe8f3fa2f854ae0952 Reviewed-on: https://gerrit.libreoffice.org/46726 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-12-19inline use-once typedefsNoel Grandin1-3/+1
Change-Id: I5c3ffc03c26b3428f1f336e6ecba7838a1cf1157 Reviewed-on: https://gerrit.libreoffice.org/46764 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-12-19Read/write 'encrypt to self' bitKatarina Behrens1-1/+4
use some template functions to avoid duplicate code Change-Id: Ia178ea3a0561e34e0431749262f5f8f1f49b4fe7 Reviewed-on: https://gerrit.libreoffice.org/46693 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2017-12-19Read/write preferred GPG signing/encryption keysKatarina Behrens1-1/+5
Change-Id: I3e21469c5f4c4f199407bbe9faba2e2ddca531b3 Reviewed-on: https://gerrit.libreoffice.org/46692 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2017-12-15Make temp copy of dbaccess/qa/unit/data/firebird_empty.odb for testingStephan Bergmann1-3/+2
...in CppunitTest_dbaccess_firebird_test. Otherwise, the test would fail with > Test name: FirebirdTest::testEmptyDBConnection > An uncaught exception of type com.sun.star.sdbc.SQLException > - The connection can not be established. No storage or URL was given. if dbaccess/qa/unit/data/firebird_empty.odb is read-only, as DocumentStorageAccess::impl_openSubStorage_nothrow (dbaccess/source/core/dataaccess/ModelImpl.cxx) takes m_pModelImplementation->m_bDocumentReadOnly into account and returns a null xStorage. Adds a move ctor to utl::TempFile (thus causing copy ctor and copy assignment op to be implicitly deleted), but leaves any move assignment op undeclared for now, as none happens to be needed (yet). Change-Id: I6f9eff07eb54f1364a0560ffa4cf1f676a319d16 Reviewed-on: https://gerrit.libreoffice.org/46561 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-12-06unotools: remove not needed UcbStreamHelper inheritanceMiklos Vajna1-1/+1
This class only has static member functions, nothing requires that inheritance. Change-Id: I31db802d0a9dcda01772b1e09a68af770868358d Reviewed-on: https://gerrit.libreoffice.org/45924 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Jenkins <ci@libreoffice.org>
2017-11-09rename AvoidConfig to FuzzingCaolán McNamara1-5/+5
cause that's what its really used for and a couple of cases are not specifically about avoiding config but avoiding uninteresting disk acccess and what not Change-Id: I4c6454f98388579fcd0bf9798321d30408ab65ee Reviewed-on: https://gerrit.libreoffice.org/44491 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2017-11-05Replace lists by vectors in configmgr/unotoolsJulien Nabet1-2/+2
+ use for range loops Change-Id: I4cebcf0536dc6c3ddfdce9532e94c0c380ea3ab9 Reviewed-on: https://gerrit.libreoffice.org/44308 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2017-10-27LocaleDataWrapper::stringToDouble() w/ decimalSeparatorAlternative, tdf#81671Eike Rathke1-0/+59
To be used instead of rtl::math::stringToDouble() if locale dependent separators are involved. Change-Id: I54359c981901dc57b3d9312b0bfd2f2a14fccb33
2017-10-27Add LocaleDataWrapper::getNumDecimalSepAlt(), tdf#81671Eike Rathke1-1/+3
Change-Id: Id3a16004603685ef859506c2c6d86f8ff097c1d0
2017-10-27Let LocaleDataWrapper::getLocaleItem() return LocaleDataItem2&, tdf#81671Eike Rathke1-3/+4
Change-Id: I16cfe81dd3ce0c8c2e905d55bea13df134c7a398
2017-10-27Supersede with XLocaleData5, LocaleData2, tdf#81671Eike Rathke1-2/+2
Change-Id: I17332be77f9c66c4fcfb7e3f3144ec624b804f94
2017-10-26loplugin:constmethod in svlNoel Grandin1-1/+1
Change-Id: If92869e19c413e11f1f299a97f96b9637aaba65d Reviewed-on: https://gerrit.libreoffice.org/43864 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-26loplugin:constmethods in unotoolsNoel Grandin7-10/+10
Change-Id: I13df4e184a826682f34a1d9e974b601397ba4a3d Reviewed-on: https://gerrit.libreoffice.org/43865 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-23overload std::hash for OUString and OStringNoel Grandin1-3/+3
no need to explicitly specify it anymore Change-Id: I6ad9259cce77201fdd75152533f5151aae83e9ec Reviewed-on: https://gerrit.libreoffice.org/43567 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-13tdf#110742 add support for icon themes via extension managerCaolán McNamara1-0/+2
Change-Id: Ic33c086ef67cdcb634d9f03f84799c234fe3beec Reviewed-on: https://gerrit.libreoffice.org/43341 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2017-10-06Revert "remove handing of deprecated Storage path option"Noel Grandin1-0/+3
This reverts commit b71fdc67ed1efd421b9b1c747708958e8e09f73c. since Jochen indicates that there is a bug in it Change-Id: I786a7885a308cb43b99d9930ed385a75bbcd9495 Reviewed-on: https://gerrit.libreoffice.org/43192 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-05loplugin:finalclasses in unotools..vbahelperNoel Grandin2-8/+4
Change-Id: I9350f9d37eaba99a1d74e103c969a9dcfe795497 Reviewed-on: https://gerrit.libreoffice.org/43160 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-05remove handing of deprecated Storage path optionJochen Nitschke1-3/+0
The only user of StoragePath was TemplateFolderCacheImpl::openCacheStream which uses TempPath for the cache file now. Change-Id: Ia21b5aa804222f28a3af3779a0ecc4789c1860b3 Reviewed-on: https://gerrit.libreoffice.org/41087 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-09-12use std::unique_ptr in TItemInfoNoel Grandin1-5/+9
and inline the TItems typedef Change-Id: I0c50d12d53ce4b52c330cad8790a65065ebdd82e Reviewed-on: https://gerrit.libreoffice.org/42182 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-09-06Don't call NotifyListeners with mutex lockedStephan Bergmann1-2/+0
...as it causes ThreadSanitizer failures during CppunitTest_basic_macros: > WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=27295) > Cycle in lock order graph: M290054517485674432 (0x000000000000) => M2405 (0x7b0c000054c0) => M290054517485674432 > > Mutex M2405 acquired here while holding mutex M290054517485674432 in main thread: > #0 pthread_mutex_lock compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:3800 (cppunittester+0x45ad87) > #1 osl_acquireMutex sal/osl/unx/mutex.cxx:97:16 (libuno_sal.so.3+0xc1ffa) > #2 osl::Mutex::acquire() include/osl/mutex.hxx:56:20 (libutllo.so+0xc06c8) > #3 osl::Guard<osl::Mutex>::Guard(osl::Mutex&) include/osl/mutex.hxx:129:17 (libutllo.so+0xbcccf) > #4 SvtSysLocaleOptions::SvtSysLocaleOptions() unotools/source/config/syslocaleoptions.cxx:504:16 (libutllo.so+0x21a4cd) > #5 SvNumberFormatterRegistry_Impl::SvNumberFormatterRegistry_Impl() svl/source/numbers/zforlist.cxx:184:33 (libsvllo.so+0x3da143) > #6 SvNumberFormatter::GetFormatterRegistry() svl/source/numbers/zforlist.cxx:368:34 (libsvllo.so+0x3e0a70) > #7 SvNumberFormatter::ImpConstruct(o3tl::strong_int<unsigned short, LanguageTypeTag>) svl/source/numbers/zforlist.cxx:322:5 (libsvllo.so+0x3dc328) > #8 SvNumberFormatter::SvNumberFormatter(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, o3tl::strong_int<unsigned short, LanguageTypeTag>) svl/source/numbers/zforlist.cxx:263:5 (libsvllo.so+0x3dbcb9) > #9 SbiScanner::NextSym() basic/source/comp/scanner.cxx:563:31 (libsblo.so+0x267d29) > #10 SbiTokenizer::Next() basic/source/comp/token.cxx:327:10 (libsblo.so+0x2771b8) > #11 SbModule::SetSource32(rtl::OUString const&) basic/source/classes/sbxmod.cxx:912:26 (libsblo.so+0x203ac8) > #12 StarBASIC::MakeModule(rtl::OUString const&, com::sun::star::script::ModuleInfo const&, rtl::OUString const&) basic/source/classes/sb.cxx:1065:8 (libsblo.so+0x16559a) > #13 StarBASIC::MakeModule(rtl::OUString const&, rtl::OUString const&) basic/source/classes/sb.cxx:1037:12 (libsblo.so+0x164fdc) > #14 MacroSnippet::MakeModule(rtl::OUString const&) basic/qa/cppunit/basictest.cxx:29:22 (libtest_basic_macros.so+0xa7ac) > #15 MacroSnippet::LoadSourceFromFile(rtl::OUString const&) basic/qa/cppunit/basictest.cxx:72:5 (libtest_basic_macros.so+0xb240) > #16 (anonymous namespace)::Coverage::run_test(rtl::OUString const&) basic/qa/cppunit/basic_coverage.cxx:75:15 (libtest_basic_macros.so+0x113d9) > #17 (anonymous namespace)::Coverage::process_directory(rtl::OUString const&) basic/qa/cppunit/basic_coverage.cxx:126:17 (libtest_basic_macros.so+0x10f46) > #18 (anonymous namespace)::Coverage::Coverage_Iterator() basic/qa/cppunit/basic_coverage.cxx:141:5 (libtest_basic_macros.so+0x1066e) > #19 void std::__invoke_impl<void, void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&>(std::__invoke_memfun_deref, void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:227:14 (libtest_basic_macros.so+0x12ffe) > #20 std::result_of<void ((anonymous namespace)::Coverage::* const&((anonymous namespace)::Coverage*&))()>::type std::__invoke<void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&>(void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:250:14 (libtest_basic_macros.so+0x12eed) > #21 _ZNKSt12_Mem_fn_baseIMN12_GLOBAL__N_18CoverageEFvvELb1EEclIJRPS1_EEEDTclsr3stdE8__invokedtdefpT6_M_pmfspclsr3stdE7forwardIT_Efp_EEEDpOS8_ /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:604:11 (libtest_basic_macros.so+0x12dcb) > #22 void std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:933:11 (libtest_basic_macros.so+0x12d3b) > #23 void std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)>::operator()<, void>() /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:991:17 (libtest_basic_macros.so+0x12c46) > #24 std::_Function_handler<void (), std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)> >::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:1731:2 (libtest_basic_macros.so+0x1260a) > #25 std::function<void ()>::operator()() const /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:2127:14 (libtest_basic_macros.so+0x1a6be) > #26 CppUnit::TestCaller<(anonymous namespace)::Coverage>::runTest() workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:175:7 (libtest_basic_macros.so+0x11dac) > #27 CppUnit::TestCaseMethodFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:32:5 (libcppunit-1.14.so.0+0xd61d2) > #28 (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) test/source/vclbootstrapprotector.cxx:39:14 (libvclbootstrapprotector.so+0x1114) > #29 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #30 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:89:12 (unobootstrapprotector.so+0x2204) > #31 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #32 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:63:16 (unoexceptionprotector.so+0x23e9) > #33 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #34 CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/DefaultProtector.cpp:15:12 (libcppunit-1.14.so.0+0xa57ad) > #35 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #36 CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:86:18 (libcppunit-1.14.so.0+0xc4a96) > #37 CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:182:28 (libcppunit-1.14.so.0+0xf4714) > #38 CppUnit::TestCase::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:91:13 (libcppunit-1.14.so.0+0xd5750) > #39 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a) > #40 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e) > #41 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a) > #42 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e) > #43 CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:47:27 (libcppunit-1.14.so.0+0x10282c) > #44 CppUnit::TestResult::runTest(CppUnit::Test*) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:149:9 (libcppunit-1.14.so.0+0xf4223) > #45 CppUnit::TestRunner::run(CppUnit::TestResult&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:96:14 (libcppunit-1.14.so.0+0x102c76) > #46 (anonymous namespace)::ProtectedFixtureFunctor::run() const sal/cppunittester/cppunittester.cxx:316:20 (cppunittester+0x4bd528) > #47 sal_main() sal/cppunittester/cppunittester.cxx:466:20 (cppunittester+0x4bc15e) > #48 main sal/cppunittester/cppunittester.cxx:373:1 (cppunittester+0x4bb9d5) > > Mutex M290054517485674432 previously acquired by the same thread here: > #0 pthread_mutex_lock compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:3800 (cppunittester+0x45ad87) > #1 osl_acquireMutex sal/osl/unx/mutex.cxx:97:16 (libuno_sal.so.3+0xc1ffa) > #2 osl::Mutex::acquire() include/osl/mutex.hxx:56:20 (libsvllo.so+0xeced8) > #3 osl::Guard<osl::Mutex>::Guard(osl::Mutex&) include/osl/mutex.hxx:129:17 (libsvllo.so+0xf3b4f) > #4 SvNumberFormatter::ImpConstruct(o3tl::strong_int<unsigned short, LanguageTypeTag>) svl/source/numbers/zforlist.cxx:321:23 (libsvllo.so+0x3dc31e) > #5 SvNumberFormatter::SvNumberFormatter(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, o3tl::strong_int<unsigned short, LanguageTypeTag>) svl/source/numbers/zforlist.cxx:263:5 (libsvllo.so+0x3dbcb9) > #6 SbiScanner::NextSym() basic/source/comp/scanner.cxx:563:31 (libsblo.so+0x267d29) > #7 SbiTokenizer::Next() basic/source/comp/token.cxx:327:10 (libsblo.so+0x2771b8) > #8 SbModule::SetSource32(rtl::OUString const&) basic/source/classes/sbxmod.cxx:912:26 (libsblo.so+0x203ac8) > #9 StarBASIC::MakeModule(rtl::OUString const&, com::sun::star::script::ModuleInfo const&, rtl::OUString const&) basic/source/classes/sb.cxx:1065:8 (libsblo.so+0x16559a) > #10 StarBASIC::MakeModule(rtl::OUString const&, rtl::OUString const&) basic/source/classes/sb.cxx:1037:12 (libsblo.so+0x164fdc) > #11 MacroSnippet::MakeModule(rtl::OUString const&) basic/qa/cppunit/basictest.cxx:29:22 (libtest_basic_macros.so+0xa7ac) > #12 MacroSnippet::LoadSourceFromFile(rtl::OUString const&) basic/qa/cppunit/basictest.cxx:72:5 (libtest_basic_macros.so+0xb240) > #13 (anonymous namespace)::Coverage::run_test(rtl::OUString const&) basic/qa/cppunit/basic_coverage.cxx:75:15 (libtest_basic_macros.so+0x113d9) > #14 (anonymous namespace)::Coverage::process_directory(rtl::OUString const&) basic/qa/cppunit/basic_coverage.cxx:126:17 (libtest_basic_macros.so+0x10f46) > #15 (anonymous namespace)::Coverage::Coverage_Iterator() basic/qa/cppunit/basic_coverage.cxx:141:5 (libtest_basic_macros.so+0x1066e) > #16 void std::__invoke_impl<void, void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&>(std::__invoke_memfun_deref, void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:227:14 (libtest_basic_macros.so+0x12ffe) > #17 std::result_of<void ((anonymous namespace)::Coverage::* const&((anonymous namespace)::Coverage*&))()>::type std::__invoke<void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&>(void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:250:14 (libtest_basic_macros.so+0x12eed) > #18 _ZNKSt12_Mem_fn_baseIMN12_GLOBAL__N_18CoverageEFvvELb1EEclIJRPS1_EEEDTclsr3stdE8__invokedtdefpT6_M_pmfspclsr3stdE7forwardIT_Efp_EEEDpOS8_ /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:604:11 (libtest_basic_macros.so+0x12dcb) > #19 void std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:933:11 (libtest_basic_macros.so+0x12d3b) > #20 void std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)>::operator()<, void>() /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:991:17 (libtest_basic_macros.so+0x12c46) > #21 std::_Function_handler<void (), std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)> >::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:1731:2 (libtest_basic_macros.so+0x1260a) > #22 std::function<void ()>::operator()() const /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:2127:14 (libtest_basic_macros.so+0x1a6be) > #23 CppUnit::TestCaller<(anonymous namespace)::Coverage>::runTest() workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:175:7 (libtest_basic_macros.so+0x11dac) > #24 CppUnit::TestCaseMethodFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:32:5 (libcppunit-1.14.so.0+0xd61d2) > #25 (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) test/source/vclbootstrapprotector.cxx:39:14 (libvclbootstrapprotector.so+0x1114) > #26 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #27 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:89:12 (unobootstrapprotector.so+0x2204) > #28 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #29 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:63:16 (unoexceptionprotector.so+0x23e9) > #30 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #31 CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/DefaultProtector.cpp:15:12 (libcppunit-1.14.so.0+0xa57ad) > #32 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #33 CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:86:18 (libcppunit-1.14.so.0+0xc4a96) > #34 CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:182:28 (libcppunit-1.14.so.0+0xf4714) > #35 CppUnit::TestCase::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:91:13 (libcppunit-1.14.so.0+0xd5750) > #36 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a) > #37 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e) > #38 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a) > #39 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e) > #40 CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:47:27 (libcppunit-1.14.so.0+0x10282c) > #41 CppUnit::TestResult::runTest(CppUnit::Test*) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:149:9 (libcppunit-1.14.so.0+0xf4223) > #42 CppUnit::TestRunner::run(CppUnit::TestResult&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:96:14 (libcppunit-1.14.so.0+0x102c76) > #43 (anonymous namespace)::ProtectedFixtureFunctor::run() const sal/cppunittester/cppunittester.cxx:316:20 (cppunittester+0x4bd528) > #44 sal_main() sal/cppunittester/cppunittester.cxx:466:20 (cppunittester+0x4bc15e) > #45 main sal/cppunittester/cppunittester.cxx:373:1 (cppunittester+0x4bb9d5) > > Mutex M290054517485674432 acquired here while holding mutex M2405 in main thread: > #0 pthread_mutex_lock compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:3800 (cppunittester+0x45ad87) > #1 osl_acquireMutex sal/osl/unx/mutex.cxx:97:16 (libuno_sal.so.3+0xc1ffa) > #2 osl::Mutex::acquire() include/osl/mutex.hxx:56:20 (libsvllo.so+0xeced8) > #3 osl::Guard<osl::Mutex>::Guard(osl::Mutex&) include/osl/mutex.hxx:129:17 (libsvllo.so+0xf3b4f) > #4 SvNumberFormatter::CurrencyChangeLink(SvNumberFormatter*, LinkParamNone*) svl/source/numbers/zforlist.cxx:3320:23 (libsvllo.so+0x3f7282) > #5 SvNumberFormatter::LinkStubCurrencyChangeLink(void*, LinkParamNone*) svl/source/numbers/zforlist.cxx:3318:1 (libsvllo.so+0x3f71f8) > #6 Link<LinkParamNone*, void>::Call(LinkParamNone*) const include/tools/link.hxx:84:45 (libutllo.so+0x21cfa0) > #7 SvtSysLocaleOptions::ConfigurationChanged(utl::ConfigurationBroadcaster*, ConfigurationHints) unotools/source/config/syslocaleoptions.cxx:674:15 (libutllo.so+0x21c06f) > #8 non-virtual thunk to SvtSysLocaleOptions::ConfigurationChanged(utl::ConfigurationBroadcaster*, ConfigurationHints) unotools/source/config/syslocaleoptions.cxx (libutllo.so+0x21c118) > #9 utl::ConfigurationBroadcaster::NotifyListeners(ConfigurationHints) unotools/source/config/options.cxx:78:33 (libutllo.so+0x1cd63f) > #10 SvtSysLocaleOptions_Impl::SetLocaleString(rtl::OUString const&) unotools/source/config/syslocaleoptions.cxx:390:9 (libutllo.so+0x21935d) > #11 SvtSysLocaleOptions::SetLocaleConfigString(rtl::OUString const&) unotools/source/config/syslocaleoptions.cxx:555:12 (libutllo.so+0x21adcc) > #12 (anonymous namespace)::Coverage::Coverage_Iterator() basic/qa/cppunit/basic_coverage.cxx:156:31 (libtest_basic_macros.so+0x108e4) > #13 void std::__invoke_impl<void, void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&>(std::__invoke_memfun_deref, void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:227:14 (libtest_basic_macros.so+0x12ffe) > #14 std::result_of<void ((anonymous namespace)::Coverage::* const&((anonymous namespace)::Coverage*&))()>::type std::__invoke<void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&>(void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:250:14 (libtest_basic_macros.so+0x12eed) > #15 _ZNKSt12_Mem_fn_baseIMN12_GLOBAL__N_18CoverageEFvvELb1EEclIJRPS1_EEEDTclsr3stdE8__invokedtdefpT6_M_pmfspclsr3stdE7forwardIT_Efp_EEEDpOS8_ /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:604:11 (libtest_basic_macros.so+0x12dcb) > #16 void std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:933:11 (libtest_basic_macros.so+0x12d3b) > #17 void std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)>::operator()<, void>() /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:991:17 (libtest_basic_macros.so+0x12c46) > #18 std::_Function_handler<void (), std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)> >::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:1731:2 (libtest_basic_macros.so+0x1260a) > #19 std::function<void ()>::operator()() const /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:2127:14 (libtest_basic_macros.so+0x1a6be) > #20 CppUnit::TestCaller<(anonymous namespace)::Coverage>::runTest() workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:175:7 (libtest_basic_macros.so+0x11dac) > #21 CppUnit::TestCaseMethodFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:32:5 (libcppunit-1.14.so.0+0xd61d2) > #22 (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) test/source/vclbootstrapprotector.cxx:39:14 (libvclbootstrapprotector.so+0x1114) > #23 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #24 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:89:12 (unobootstrapprotector.so+0x2204) > #25 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #26 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:63:16 (unoexceptionprotector.so+0x23e9) > #27 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #28 CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/DefaultProtector.cpp:15:12 (libcppunit-1.14.so.0+0xa57ad) > #29 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #30 CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:86:18 (libcppunit-1.14.so.0+0xc4a96) > #31 CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:182:28 (libcppunit-1.14.so.0+0xf4714) > #32 CppUnit::TestCase::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:91:13 (libcppunit-1.14.so.0+0xd5750) > #33 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a) > #34 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e) > #35 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a) > #36 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e) > #37 CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:47:27 (libcppunit-1.14.so.0+0x10282c) > #38 CppUnit::TestResult::runTest(CppUnit::Test*) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:149:9 (libcppunit-1.14.so.0+0xf4223) > #39 CppUnit::TestRunner::run(CppUnit::TestResult&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:96:14 (libcppunit-1.14.so.0+0x102c76) > #40 (anonymous namespace)::ProtectedFixtureFunctor::run() const sal/cppunittester/cppunittester.cxx:316:20 (cppunittester+0x4bd528) > #41 sal_main() sal/cppunittester/cppunittester.cxx:466:20 (cppunittester+0x4bc15e) > #42 main sal/cppunittester/cppunittester.cxx:373:1 (cppunittester+0x4bb9d5) > > Mutex M2405 previously acquired by the same thread here: > #0 pthread_mutex_lock compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:3800 (cppunittester+0x45ad87) > #1 osl_acquireMutex sal/osl/unx/mutex.cxx:97:16 (libuno_sal.so.3+0xc1ffa) > #2 osl::Mutex::acquire() include/osl/mutex.hxx:56:20 (libutllo.so+0xc06c8) > #3 osl::Guard<osl::Mutex>::Guard(osl::Mutex&) include/osl/mutex.hxx:129:17 (libutllo.so+0xbcccf) > #4 SvtSysLocaleOptions::SetLocaleConfigString(rtl::OUString const&) unotools/source/config/syslocaleoptions.cxx:554:16 (libutllo.so+0x21adab) > #5 (anonymous namespace)::Coverage::Coverage_Iterator() basic/qa/cppunit/basic_coverage.cxx:156:31 (libtest_basic_macros.so+0x108e4) > #6 void std::__invoke_impl<void, void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&>(std::__invoke_memfun_deref, void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:227:14 (libtest_basic_macros.so+0x12ffe) > #7 std::result_of<void ((anonymous namespace)::Coverage::* const&((anonymous namespace)::Coverage*&))()>::type std::__invoke<void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&>(void ((anonymous namespace)::Coverage::* const&)(), (anonymous namespace)::Coverage*&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:250:14 (libtest_basic_macros.so+0x12eed) > #8 _ZNKSt12_Mem_fn_baseIMN12_GLOBAL__N_18CoverageEFvvELb1EEclIJRPS1_EEEDTclsr3stdE8__invokedtdefpT6_M_pmfspclsr3stdE7forwardIT_Efp_EEEDpOS8_ /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:604:11 (libtest_basic_macros.so+0x12dcb) > #9 void std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:933:11 (libtest_basic_macros.so+0x12d3b) > #10 void std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)>::operator()<, void>() /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:991:17 (libtest_basic_macros.so+0x12c46) > #11 std::_Function_handler<void (), std::_Bind<std::_Mem_fn<void ((anonymous namespace)::Coverage::*)()> ((anonymous namespace)::Coverage*)> >::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:1731:2 (libtest_basic_macros.so+0x1260a) > #12 std::function<void ()>::operator()() const /usr/lib/gcc/x86_64-redhat-linux/6.4.1/../../../../include/c++/6.4.1/functional:2127:14 (libtest_basic_macros.so+0x1a6be) > #13 CppUnit::TestCaller<(anonymous namespace)::Coverage>::runTest() workdir/UnpackedTarball/cppunit/include/cppunit/TestCaller.h:175:7 (libtest_basic_macros.so+0x11dac) > #14 CppUnit::TestCaseMethodFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:32:5 (libcppunit-1.14.so.0+0xd61d2) > #15 (anonymous namespace)::Protector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) test/source/vclbootstrapprotector.cxx:39:14 (libvclbootstrapprotector.so+0x1114) > #16 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #17 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx:89:12 (unobootstrapprotector.so+0x2204) > #18 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #19 (anonymous namespace)::Prot::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) unotest/source/cpp/unoexceptionprotector/unoexceptionprotector.cxx:63:16 (unoexceptionprotector.so+0x23e9) > #20 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #21 CppUnit::DefaultProtector::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/DefaultProtector.cpp:15:12 (libcppunit-1.14.so.0+0xa57ad) > #22 CppUnit::ProtectorChain::ProtectFunctor::operator()() const workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:20:25 (libcppunit-1.14.so.0+0xc7614) > #23 CppUnit::ProtectorChain::protect(CppUnit::Functor const&, CppUnit::ProtectorContext const&) workdir/UnpackedTarball/cppunit/src/cppunit/ProtectorChain.cpp:86:18 (libcppunit-1.14.so.0+0xc4a96) > #24 CppUnit::TestResult::protect(CppUnit::Functor const&, CppUnit::Test*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:182:28 (libcppunit-1.14.so.0+0xf4714) > #25 CppUnit::TestCase::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestCase.cpp:91:13 (libcppunit-1.14.so.0+0xd5750) > #26 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a) > #27 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e) > #28 CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:64:30 (libcppunit-1.14.so.0+0xd6d5a) > #29 CppUnit::TestComposite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestComposite.cpp:23:3 (libcppunit-1.14.so.0+0xd6a2e) > #30 CppUnit::TestRunner::WrappingSuite::run(CppUnit::TestResult*) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:47:27 (libcppunit-1.14.so.0+0x10282c) > #31 CppUnit::TestResult::runTest(CppUnit::Test*) workdir/UnpackedTarball/cppunit/src/cppunit/TestResult.cpp:149:9 (libcppunit-1.14.so.0+0xf4223) > #32 CppUnit::TestRunner::run(CppUnit::TestResult&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) workdir/UnpackedTarball/cppunit/src/cppunit/TestRunner.cpp:96:14 (libcppunit-1.14.so.0+0x102c76) > #33 (anonymous namespace)::ProtectedFixtureFunctor::run() const sal/cppunittester/cppunittester.cxx:316:20 (cppunittester+0x4bd528) > #34 sal_main() sal/cppunittester/cppunittester.cxx:466:20 (cppunittester+0x4bc15e) > #35 main sal/cppunittester/cppunittester.cxx:373:1 (cppunittester+0x4bb9d5) Change-Id: I2dc13b1e8a5f58155b2df4679bd1c1d73819cb6f