1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: errhdl.cxx,v $
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"
39 #include <tools/debug.hxx>
40 #include <vcl/svapp.hxx>
41 #include <vcl/sound.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 );
49 #if defined(MSC) && defined(WIN)
50 #define CVBREAK __asm int 3;
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!
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
)
72 // NOTE4("ASSERT: %s at %d: %s\n", pFileName, nLine, pError);
75 if( !bAssertFail
&& GetpApp() && GetpApp()->IsInMain() )
79 aErr
= "Assertion failed\n==================\nFILE : ";
82 aErr
+= ByteString::CreateFromInt32( nLine
);
86 ByteString
aTmp( getenv( "SW_NOBEEP" ) );
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
93 DbgError( aErr
.GetBuffer() );
99 Sound::Beep(SOUND_ERROR
);
100 Sound::Beep(SOUND_ERROR
);
101 Sound::Beep(SOUND_ERROR
);
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!
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
];
141 AssertFail( pMsg
, pFileName
, nLine
);