Also makes sure that the code initializing the struct uses the same
mutex.
There is also a duplicating code in comphelper/source/misc/compbase.cxx;
however, to deduplicate also that, we would need to export the function.
Change-Id: I145ea21d5c20536bab887ad55c69b74e7aeeb239
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181865
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
and
cid#1556190 Check of thread-shared field evades lock acquisition
cid#1555295 Check of thread-shared field evades lock acquisition
cid#1608596 Check of thread-shared field evades lock acquisition
cid#1555236 Check of thread-shared field evades lock acquisition
Double-checked locking pattern
Change-Id: Id5cba26750bbd9c7e0248181f636ff653ada5654
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176739
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...so that it looks for the /usr/bin/ symlink with the name with which it is
created by sysui/CustomTarget_share.mk via sysui/desktop/share/create_tree.sh
Change-Id: I46c2bb9d8df936fd5c7bd52bbee86da959d5c6cb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176597
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
...by implementing (for now) just enough of the cpp2uno half of the Wasm UNO
bridge to make it work. In general, that half suffers from the same issue as
the already-implemented uno2cpp half, namely that Wasm doesn't allow to generate
code on the fly (which, in this case, would be needed to implement the vtable
slot trampoline functions). So, for now just hard-code the few
vtableSlotFunction_* that are needed by the UNO interfaces for
cppuhelper/source/exc_thrower.cxx. (A proper fix would probably use the same
approach as for the uno2cpp half, and use something like wasmcallgen to generate
at least all the vtableSlotFunction_* needed for udkapi/offapi upfront.)
The RTTI for the exceptions needs to be unique across the executable for
exception catching to actually work (as it compares exception types by RTTI
address rather than by name). We thus need to export all the relevant RTTI
symbols (which I hacked into the existing wasmcallgen for now, even if that
makes that executable's name a slight misnomer now), and access them with a new
jsGetExportedSymbol. (This exporting would also be needed by the "classical"
approach of using dlsym on the main module, cf.
<https://gerrit.libreoffice.org/c/core/+/167187> "WIP: Emscripten: Set up
support for dlsym from main module". And while that dlsym approach would work,
it is much simpler to just use that jsGetExportedSymbol than to use a dlsym
detour, and thereby avoid all the hassle of -sMAIN_MODULE detailed in the commit
message of that Gerrit change.)
It also turned out that including Emscripten's <cxxabi.h> needs
__USING_WASM_EXCEPTIONS__ to be defined, because it uses that in its declaration
of __cxa_throw. (The source for setting that define internally in Emscripten is
get_cflags in the emsdk's upstream/emscripten/tools/system_libs.py, which
defines __USING_EMSCRIPTEN_EXCEPTIONS__ for the non-Wasm, Emscripten JS
exception mode, and defines __USING_WASM_EXCEPTIONS__ for
--enable-wasm-exceptions, which we use. The commit message of
f4ec967599 "Fix redefinion of Emscripten
__cxxabiv1::__cxa_exception" documents my prior confusion of when one or the
other would be defined.)
Change-Id: Id08765ab5b4ce1553dc3a61648324526185cb64c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170246
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
Seeing as since:
commit e9531b792d
Date: Tue Feb 6 14:39:47 2024 +0100
sal: rtlRandomPool: require OS random device, abort if not present
Both rtl_random_createPool() and rtl_random_getBytes() first try to get
random data from the OS, via /dev/urandom or rand_s() (documented to
call RtlGenRandom(), see [1]).
we don't use the initial arg to rtl_random_getBytes anymore, drop the
requirement to have one. Then simplify our usages of that, and
addtionally deprecate rtl_random_createPool and rtl_random_destroyPool.
Change-Id: I13dcc067714a8a741a4e8f2bfcf2006373f832c4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167067
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
where it was obsoleted by commits 2484de6728
(Remove non-const Sequence::begin()/end() in internal code, 2021-10-15) and
fb3c04bd19 (Drop non-const Sequence::operator[]
in internal code 2021-11-05).
Change-Id: Ia2b60af973183bbe79656e67b5e37d7efa39a308
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166817
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Since I want to use them in the cppuhelper too, but comphelper is
"above" cppuhelper in the dependency tree.
And sharing the code between cppuhelper and the rest of LO
across the URE boundary appears to be nigh impossible.
Change-Id: I2ebf37746928dc820df43347dc1a2c158f00ec50
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151445
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
after I got it wrong in both the original commit
commit d15a6560bd
use more string_view
and in the attempted fix
commit dd41ea3ec1
fix for o3tl::equalsAscii
thanks to sberg for spotting that
Change-Id: Iff12879de823553b2623db48979e9a720302f2d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150240
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
(which reads better in combination with the following
OUString::endsWithIgnoreAsciiCase)
Change-Id: Ia80e3d205e5e3b48f9df43757fb267258ba3f8ea
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149353
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
In that rhbz issue ("Libreoffice cannot start"), it looks like some junk file
named /usr/lib64/libreoffice/program/services/services.rdb;63ddcd86 caused
soffice.bin to crash early, without any information (cf.
a1faf14f74 "rhbz#2171265 Report fatal
InitApplicationServiceManager failures more reliably"). So, following up on
b8c7548527 "ignore backup files in services/
directory to avoid debugging grief", extend the set of ignored files to anything
starting with "." or not ending in ".rdb" (in any case).
Change-Id: I154750465d2128b3ff6493f4ab606072dda61503
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149328
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
It had been using cppu::OComponentHelper (which derives from XAggregation) ever
since b525a3115f "initial import", bug e.g.
ORegistryFactoryHelper deriving from it implements queryInterface in a way that
is incompatible with XAggregation (it should only have forwarded to
OFactoryComponentHelper::queryInterface, and rather implemented its logic in an
ORegistryFactoryHelper::queryAggregation override).
Also, without this commit but instead with a local
> diff --git a/cppuhelper/source/factory.cxx b/cppuhelper/source/factory.cxx
> index c8efcab0e604..9011264b3f3a 100644
> --- a/cppuhelper/source/factory.cxx
> +++ b/cppuhelper/source/factory.cxx
> @@ -241,6 +241,7 @@ class OFactoryComponentHelper
> , public OComponentHelper
> , public OSingleFactoryHelper
> {
> + void SAL_CALL setDelegator(css::uno::Reference<css::uno::XInterface> const &) final { assert(false); }
> public:
> OFactoryComponentHelper(
> const Reference<XMultiServiceFactory > & rServiceManager,
`make check` still succeeded for me on Linux, without hitting that injected
assert that should have fired if that XAggregation mechanism had been used after
all.
So switch from OComponentHelper to WeakComponentImplHelper here (which is the
simplest implementation helper to use, even if it still needs the non-standard
OFactoryComponentHelper::getTypes overriding the non-fitting
WeakComponentImplHelper default implementation).
Change-Id: I9fc2f4f2ef36bd016f9a943a8efd5e4ac5f3baaf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145428
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
...as it doesn't make sense that e.g. OFactoryComponentHelper::createInstance
checked for bOneInstance, called OSingleFactoryHelper::createInstance, which
called [OFactoryComponentHelper::]createInstanceWithContext, which checked for
bOneInstance again
Change-Id: I53f54079a2ac1af18a6e95f0cb9d7b75c1e46ceb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145418
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
4bfc00aca2 "#67468# factories support
XUnloadingPreference now" had added the check for XUnloadingPreference there,
but that's already covered by OFactoryComponentHelper::queryAggregation
delegating to OSingleFactoryHelper::queryInterface. (And as
OFactoryComponentHelper is inheriting XAggregation via OComponentHelper, the
only thing that OFactoryComponentHelper::queryInterface shall do is delegate to
OComponentHelper::queryInterface.)
Change-Id: Iebe507e88791d1e2390d042a8a9c152512ce212a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145420
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>