You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.7 KiB
50 lines
1.7 KiB
2 years ago
|
From a1faf14f74a62ea76141115538d7d30d90c9eeb6 Mon Sep 17 00:00:00 2001
|
||
|
From: Stephan Bergmann <sbergman@redhat.com>
|
||
|
Date: Wed, 22 Mar 2023 14:40:04 +0100
|
||
|
Subject: [PATCH] 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>
|
||
|
---
|
||
|
desktop/source/app/app.cxx | 4 +++-
|
||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
|
||
|
index 5a35b5a745c2..f1ec0b679bc0 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>
|
||
|
|
||
|
@@ -458,7 +459,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
|
||
|
--
|
||
|
2.40.0
|
||
|
|