diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2012-07-25 10:31:21 +0200 |
---|---|---|
committer | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2012-07-25 11:20:54 +0200 |
commit | c794788fb0d28cbd1f8bb6be50198264b3427fc2 (patch) | |
tree | 90104a599e58c79adafc9af9ef085006bc32134b /desktop | |
parent | 330769828fdf933eb1fb6b504ebbeb5cbe0e0eba (diff) |
Related fdo#51252: Report uncaught exceptions with MessageBox on Windows
...as stderr is not generally visible there to the user (and vcl's
Application::ShowNativeErrorBox might not yet be functional during early start
up).
Change-Id: I1b99a77f7add967579d726462aa0a7b83a5d2d0a
Signed-off-by: Fridrich Štrba <fridrich.strba@bluewin.ch>
Diffstat (limited to 'desktop')
-rwxr-xr-x[-rw-r--r--] | desktop/source/app/sofficemain.cxx | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/desktop/source/app/sofficemain.cxx b/desktop/source/app/sofficemain.cxx index 93081b92d8f6..a0fba044922e 100644..100755 --- a/desktop/source/app/sofficemain.cxx +++ b/desktop/source/app/sofficemain.cxx @@ -26,6 +26,7 @@ * ************************************************************************/ +#include "sal/config.h" #include "desktopdllapi.h" @@ -37,14 +38,21 @@ #include <rtl/bootstrap.hxx> #include <tools/extendapplicationenvironment.hxx> +#if defined WNT +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#endif + int SVMain(); // -=-= main() -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= extern "C" int DESKTOP_DLLPUBLIC soffice_main() { -#if defined(ANDROID) +#if defined ANDROID || defined WNT try { +#endif +#if defined(ANDROID) rtl::Bootstrap::setIniFilename( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file:///assets/program/lofficerc"))); #endif @@ -75,10 +83,20 @@ extern "C" int DESKTOP_DLLPUBLIC soffice_main() } #endif return SVMain(); -#ifdef ANDROID +#if defined ANDROID || defined WNT } catch (const ::com::sun::star::uno::Exception &e) { +#if defined ANDROID fprintf (stderr, "Not handled UNO exception at main: '%s'\n", rtl::OUStringToOString(e.Message, RTL_TEXTENCODING_UTF8).getStr()); +#elif defined WNT + MessageBoxW( + 0, + reinterpret_cast< LPCWSTR >( + rtl::OUString("Unhandled exception:\n" + e.Message).getStr()), + reinterpret_cast< LPCWSTR >(rtl::OUString("Fatal Error").getStr()), + (MB_OK | MB_ICONERROR | MB_DEFBUTTON1 | MB_TASKMODAL + | MB_SETFOREGROUND | MB_TOPMOST)); +#endif throw; // to get exception type printed } #endif |