Update ooo320-m1
[ooovba.git] / sw / source / core / except / errhdl.cxx
blob9927e6ef3fd2d1aa8be2137dd146505d9a04d0e7
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: errhdl.cxx,v $
10 * $Revision: 1.7 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_sw.hxx"
33 #define _ERRHDL_CXX
36 #include "stdlib.h"
37 #ifdef WIN
38 #endif
39 #include <tools/debug.hxx>
40 #include <vcl/svapp.hxx>
41 #include <vcl/sound.hxx>
42 #include <errhdl.hxx>
43 #include <error.h> // fuer die defines von ERR_SW6MSG_ ...
45 // break into CodeView
46 #if defined(ZTC) && defined(WIN)
47 #define CVBREAK asm( 0xCC );
48 #endif
49 #if defined(MSC) && defined(WIN)
50 #define CVBREAK __asm int 3;
51 #endif
52 #ifndef CVBREAK
53 #define CVBREAK
54 #endif
56 BOOL bAssertFail = FALSE; // ist gerade eine Assertbox oben ?
57 BOOL bAssert = FALSE; // TRUE, wenn mal ein ASSERT kam.
59 /*------------------------------------------------------------------------
60 Ausgabe einer Fehlermeldung inkl. Bedingung, Dateiname und Zeilennummer
61 wo der Fehler auftrat.
62 Die Funktion wird durch das ASSERT Makro gerufen!
63 Parameter:
64 char *pError Fehlermeldung
65 char *pFileName Filename in dem der Fehler auftrat
66 USHORT nLine Zeilennummer in dem der Fehler auftrat
67 ------------------------------------------------------------------------*/
69 void AssertFail( const sal_Char* pError, const sal_Char* pFileName, USHORT nLine )
71 CVBREAK;
72 // NOTE4("ASSERT: %s at %d: %s\n", pFileName, nLine, pError);
73 bAssert = TRUE;
75 if( !bAssertFail && GetpApp() && GetpApp()->IsInMain() )
77 bAssertFail = TRUE;
78 ByteString aErr;
79 aErr = "Assertion failed\n==================\nFILE : ";
80 aErr += pFileName;
81 aErr += " at line ";
82 aErr += ByteString::CreateFromInt32( nLine );
83 aErr += "\nERROR : ";
84 aErr += pError;
86 ByteString aTmp( getenv( "SW_NOBEEP" ) );
87 if ( aTmp != "TRUE" )
88 Sound::Beep(SOUND_ERROR);
90 #if defined( UNX ) && !defined( DBG_UTIL )
91 DBG_ERROR( aErr.GetBuffer() ); // DbgErr ist in UNIX-nicht Produkt-Versionen nicht definiert
92 #else
93 DbgError( aErr.GetBuffer() );
94 #endif
95 bAssertFail = FALSE;
97 else
99 Sound::Beep(SOUND_ERROR);
100 Sound::Beep(SOUND_ERROR);
101 Sound::Beep(SOUND_ERROR);
102 if( !bAssertFail )
103 *(short *)0 = 4711; // UAE ausloesen
107 /*------------------------------------------------------------------------
108 Ausgabe einer Fehlermeldung inkl. Bedingung, Dateiname und Zeilennummer
109 wo der Fehler auftrat.
110 Die Funktion wird durch das ASSERT Makro gerufen!
111 Parameter:
112 USHORT nErrorId Id fuer Fehlermeldung
113 char *pFileName Filename in dem der Fehler auftrat
114 USHORT nLine Zeilennummer in dem der Fehler auftrat
115 ------------------------------------------------------------------------*/
117 void AssertFail( USHORT nErrorId, const sal_Char* pFileName, USHORT nLine )
119 // Umsetzung der ErrorId in eine Fehlermeldung
120 static const sal_Char
121 /* Error Fehlermeldungen zugriffe ausserhalb eines Bereiches */
122 sERR_VAR_IDX[] = "Op[]",
123 sERR_OUTOFSCOPE[] = "Zugriff ausserhalb des Bereiches",
124 /* Error Codes fuer Numerierungsregeln */
125 sERR_NUMLEVEL[] = "Falscher Num-Level",
126 /* Error Codes fuer TxtNode */
127 sERR_NOHINTS[] = "Zugriff auf ungueltiges HintsArray",
128 sERR_UNKNOWN[] = "???";
130 static const sal_Char* aErrStrTab[ ERR_SWGMSG_END - ERR_SWGMSG_START +1 ] =
132 sERR_VAR_IDX, sERR_OUTOFSCOPE, sERR_NUMLEVEL, sERR_NOHINTS
135 const sal_Char* pMsg;
136 if( nErrorId >= ERR_SWGMSG_START && nErrorId < ERR_SWGMSG_END )
137 pMsg = aErrStrTab[ nErrorId - ERR_SWGMSG_START ];
138 else
139 pMsg = sERR_UNKNOWN;
141 AssertFail( pMsg, pFileName, nLine );