desktop/source/app/sofficemain.cxx |   22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

New commits:
commit fdfb7a3c4b3a89b73ab5546b9620348bc4984d8f
Author: Stephan Bergmann <sberg...@redhat.com>
Date:   Wed Jul 25 10:31:21 2012 +0200

    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

diff --git a/desktop/source/app/sofficemain.cxx 
b/desktop/source/app/sofficemain.cxx
old mode 100644
new mode 100755
index 93081b9..a0fba04
--- 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
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to