diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2023-03-22 14:40:04 +0100 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2023-03-24 09:08:27 +0000 |
commit | af0db7d281b496280bdd0f1bc4eabab42fc37b1a (patch) | |
tree | c1c3fccb4d89809f1c241eeb526110e9b053f042 /desktop | |
parent | 128671288204136ceba258a5fe809c354728a175 (diff) |
rhbz#2171265 Report fatal InitApplicationServiceManager failures more reliably
For example, when initialization of the UNO type manager failed, any code run
between this SetBootstrapError and the HandleBootstrapErrors in Desktop::Main
which would need the type manager (e.g., to set a css::uno::Any) would have
caused a crash, so would have failed to print to std::cerr the sought-after
css::uno::Exception message. The mis-initialized process would most definitely
crash sooner or later anyway, so there's no harm in a controlled std::abort()
here (if that is even reached, and the process doesn't already crash in
HandleBootstrapErrors, after it has printed the relevant information to
std::cerr).
Change-Id: Ic5889aedec0908fa4b1e2966eb188508d0f92d26
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149323
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
(cherry picked from commit a1faf14f74a62ea76141115538d7d30d90c9eeb6)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149440
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/source/app/app.cxx | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index 135a5b5fdb1f..26c1711abd20 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -28,6 +28,7 @@ #include <sal/config.h> +#include <cstdlib> #include <iostream> #include <string_view> @@ -455,7 +456,8 @@ void Desktop::Init() } catch (css::uno::Exception & e) { - SetBootstrapError( BE_UNO_SERVICEMANAGER, e.Message ); + HandleBootstrapErrors( BE_UNO_SERVICEMANAGER, e.Message ); + std::abort(); } // Check whether safe mode is enabled |