From 5ae485f0b5e788c787de4f166e500aba243e4c70 Mon Sep 17 00:00:00 2001 From: tamlin Date: Sat, 29 Dec 2001 11:41:29 +0000 Subject: [PATCH] cleaning up --- src/alice/alice.cpp | 4 +- src/alice/alice_meta.epp | 8 +- src/burp/burp.h | 2 +- src/common/memory/memory_pool.cpp | 8 +- src/dsql/ddl.cpp | 6 +- src/dsql/dsql.cpp | 4 +- src/dsql/errd.cpp | 57 +++++--- src/dsql/user_dsql.cpp | 2 +- src/dudley/expand.cpp | 2 +- src/dudley/parse.cpp | 2 +- src/gpre/gpre.cpp | 6 +- src/gpre/par.cpp | 11 +- src/include/fb_exception.h | 10 +- src/journal/gjrn.cpp | 14 +- src/jrd/align.cpp | 4 +- src/jrd/err.cpp | 4 +- src/jrd/exe.cpp | 235 +++++++++++++++++------------- src/jrd/gds.cpp | 2 +- src/jrd/ib_stdio.cpp | 8 +- src/jrd/iberr.cpp | 2 +- src/jrd/lck.cpp | 12 +- src/jrd/nav.cpp | 6 +- src/jrd/scl.epp | 9 +- src/qli/dtr.cpp | 2 +- src/qli/err.cpp | 4 +- src/remote/allr.cpp | 4 +- src/remote/interface.cpp | 6 +- src/remote/server.cpp | 4 +- src/utilities/dba.epp | 5 +- src/utilities/dba_full.epp | 3 +- src/utilities/gsec.h | 2 +- src/wal/walw.cpp | 2 +- 32 files changed, 243 insertions(+), 207 deletions(-) diff --git a/src/alice/alice.cpp b/src/alice/alice.cpp index 52e7cf02f7..ee076d7f42 100644 --- a/src/alice/alice.cpp +++ b/src/alice/alice.cpp @@ -24,7 +24,7 @@ // //____________________________________________________________ // -// $Id: alice.cpp,v 1.9 2001-12-28 05:14:41 tamlin Exp $ +// $Id: alice.cpp,v 1.10 2001-12-29 11:41:21 tamlin Exp $ // // 2001.07.06 Sean Leyne - Code Cleanup, removed "#ifdef READONLY_DATABASE" // conditionals, as the engine now fully supports @@ -90,7 +90,7 @@ struct tgbl *gdgbl; #define ALICE_MSG_FAC 3 #define EXIT(code) { tdgbl->exit_code = (code); \ - Firebird::status_longjmp_error::raise(1); } + Firebird::status_exception::raise(1); } #if defined (WIN95) && !defined (GUI_TOOLS) static bool fAnsiCP = false; diff --git a/src/alice/alice_meta.epp b/src/alice/alice_meta.epp index c4538dff4a..f54f5ff4e6 100644 --- a/src/alice/alice_meta.epp +++ b/src/alice/alice_meta.epp @@ -27,7 +27,7 @@ * *____________________________________________________________ * - * $Id: alice_meta.epp,v 1.3 2001-12-24 02:50:47 tamlin Exp $ + * $Id: alice_meta.epp,v 1.4 2001-12-29 11:41:21 tamlin Exp $ */ #include "firebird.h" @@ -91,13 +91,11 @@ static struct rfr_tab_t rfr_table[] = { #ifdef GUI_TOOLS #define RETURN_ERROR(user_status) \ { memcpy (user_status, gds_status, sizeof (gds_status)); \ - Firebird::status_longjmp_error::raise(0); } -// LONGJMP ((JMP_BUF)tdgbl->alice_env, 1); } + Firebird::status_exception::raise(0); } #else #define RETURN_ERROR(user_status) \ { ALICE_print_status (gds_status); \ - Firebird::status_longjmp_error::raise(0); } -// LONGJMP ((JMP_BUF)tdgbl->alice_env, 1); } + Firebird::status_exception::raise(0); } #endif diff --git a/src/burp/burp.h b/src/burp/burp.h index 61c2c1e8eb..223a41fe86 100644 --- a/src/burp/burp.h +++ b/src/burp/burp.h @@ -865,7 +865,7 @@ extern struct tgbl *gdgbl; // I had funnies with this cast #define EXIT(code) { tdgbl->exit_code = ((volatile int)code); \ if (tdgbl->burp_env != NULL) \ - Firebird::status_longjmp_error::raise(1); } + Firebird::status_exception::raise(1); } #else #error Dont do this, it hurts! diff --git a/src/common/memory/memory_pool.cpp b/src/common/memory/memory_pool.cpp index 7798fa1d1b..30d03dcd07 100644 --- a/src/common/memory/memory_pool.cpp +++ b/src/common/memory/memory_pool.cpp @@ -61,12 +61,12 @@ // // This is a debug option ONLY and SHOULD NEVER be enabled in a production build // because of its significant performance penality. -static const bool ENABLE_FREQUENT_VERIFICATION = true; +static const bool ENABLE_FREQUENT_VERIFICATION = false; // These next variables control the Red Zone debugging offered by the memory pool -static const bool ENABLE_RED_ZONES = true; // set to false to disable the red zones +static const bool ENABLE_RED_ZONES = false; // set to false to disable the red zones static const int RED_ZONE_FILL = 0xFD; static const int BEFORE_RED_ZONE_SIZE = 3; // The size of the red zone BEFORE the memory, // in ALLOCATION UNITS! Does NOT need to be set to @@ -308,7 +308,7 @@ extern "C" { static void ERR_bugcheck(int number) { // What to do? - Firebird::status_longjmp_error::raise(number); + Firebird::status_exception::raise(number); } } #endif @@ -320,7 +320,7 @@ static void ERR_bugcheck(int number) static void private_ERR_bugcheck(int number) { - Firebird::status_longjmp_error::raise(number); + Firebird::status_exception::raise(number); } // TMN: FIXFIX diff --git a/src/dsql/ddl.cpp b/src/dsql/ddl.cpp index 21fd8c46d4..c1ccd71aa0 100644 --- a/src/dsql/ddl.cpp +++ b/src/dsql/ddl.cpp @@ -20,7 +20,7 @@ * All Rights Reserved. * Contributor(s): ______________________________________. * - * $Id: ddl.cpp,v 1.5 2001-12-24 02:50:48 tamlin Exp $ + * $Id: ddl.cpp,v 1.6 2001-12-29 11:41:22 tamlin Exp $ * 2001.5.20 Claudio Valderrama: Stop null pointer that leads to a crash, * caused by incomplete yacc syntax that allows ALTER DOMAIN dom SET; * @@ -255,7 +255,7 @@ void DDL_execute(REQ request) } if (s) { - Firebird::status_longjmp_error::raise(tdsql->tsql_status[1]); + Firebird::status_exception::raise(tdsql->tsql_status[1]); } } @@ -4708,7 +4708,7 @@ static void modify_relation( REQ request) METD_drop_relation(request, relation_name); request->req_relation = 0; tdsql->tsql_setjmp = old_env; - Firebird::status_longjmp_error::raise(tdsql->tsql_status[1]); + Firebird::status_exception::raise(tdsql->tsql_status[1]); } } diff --git a/src/dsql/dsql.cpp b/src/dsql/dsql.cpp index 15b824fd29..ae09201123 100644 --- a/src/dsql/dsql.cpp +++ b/src/dsql/dsql.cpp @@ -25,7 +25,7 @@ * December 2001 Mike Nordell: Major overhaul to (try to) make it C++ */ /* -$Id: dsql.cpp,v 1.7 2001-12-24 02:50:48 tamlin Exp $ +$Id: dsql.cpp,v 1.8 2001-12-29 11:41:22 tamlin Exp $ */ /************************************************************** V4 Multi-threading changes. @@ -3944,7 +3944,7 @@ static void punt(void) tdsql = GET_THREAD_DATA; - Firebird::status_longjmp_error::raise(tdsql->tsql_status[1]); + Firebird::status_exception::raise(tdsql->tsql_status[1]); } diff --git a/src/dsql/errd.cpp b/src/dsql/errd.cpp index 6bc742f457..421df4f372 100644 --- a/src/dsql/errd.cpp +++ b/src/dsql/errd.cpp @@ -110,7 +110,7 @@ void ERRD_error( int code, const char* text) sprintf(s, "** DSQL error: %s **\n", text); TRACE(s); - Firebird::status_longjmp_error::raise(code); + Firebird::status_exception::raise(code); } @@ -212,7 +212,7 @@ BOOLEAN ERRD_post_warning(STATUS status, ...) } -void ERRD_post( STATUS status, ...) +void ERRD_post(STATUS status, ...) { /************************************** * @@ -222,15 +222,17 @@ void ERRD_post( STATUS status, ...) * * Functional description * Post an error, copying any potentially - * transient data before we do the longjmp. + * transient data before we punt. * **************************************/ - STATUS *status_vector; - STATUS tmp_status[ISC_STATUS_LENGTH], warning_status[ISC_STATUS_LENGTH]; - int i, tmp_status_len = 0, status_len = 0, err_status_len = 0; - int warning_count = 0, warning_indx = 0; - status_vector = ((TSQL) GET_THREAD_DATA)->tsql_status; + STATUS tmp_status[ISC_STATUS_LENGTH]; + STATUS warning_status[ISC_STATUS_LENGTH]; + int tmp_status_len = 0; + int status_len = 0; + int warning_indx = 0; + + STATUS*status_vector = ((TSQL) GET_THREAD_DATA)->tsql_status; /* stuff the status into temp buffer */ MOVE_CLEAR(tmp_status, sizeof(tmp_status)); @@ -242,7 +244,8 @@ void ERRD_post( STATUS status, ...) if (status_vector[0] != gds_arg_gds || (status_vector[0] == gds_arg_gds && status_vector[1] == 0 && - status_vector[2] != gds_arg_warning)) { + status_vector[2] != gds_arg_warning)) + { /* this is a blank status vector */ status_vector[0] = gds_arg_gds; status_vector[1] = gds_dsql_error; @@ -253,27 +256,36 @@ void ERRD_post( STATUS status, ...) if (status_len) --status_len; -/* check for duplicated error code */ - for (i = 0; i < ISC_STATUS_LENGTH; i++) { - if (status_vector[i] == gds_arg_end && i == status_len) + // check for duplicated error code + int i; + for (i = 0; i < ISC_STATUS_LENGTH; i++) + { + if (status_vector[i] == gds_arg_end && i == status_len) { break; /* end of argument list */ + } - if (i && i == warning_indx) + if (i && i == warning_indx) { break; /* vector has no more errors */ + } if (status_vector[i] == tmp_status[1] && i && status_vector[i - 1] != gds_arg_warning && i + tmp_status_len - 2 < ISC_STATUS_LENGTH && (memcmp(&status_vector[i], &tmp_status[1], - sizeof(STATUS) * (tmp_status_len - 2)) == 0)) { + sizeof(STATUS) * (tmp_status_len - 2)) == 0)) + { /* duplicate found */ ERRD_punt(); } } -/* if the status_vector has only warnings then adjust err_status_len */ - if ((err_status_len = i) == 2 && warning_indx) + // if the status_vector has only warnings then adjust err_status_len + int err_status_len = i; + if (err_status_len == 2 && warning_indx) { err_status_len = 0; + } + + int warning_count = 0; if (warning_indx) { /* copy current warning(s) to a temp buffer */ @@ -283,14 +295,17 @@ void ERRD_post( STATUS status, ...) PARSE_STATUS(warning_status, warning_count, warning_indx); } -/* add the status into a real buffer right in between last error - and first warning */ + // add the status into a real buffer right in between last + // error and first warning - if ((i = err_status_len + tmp_status_len) < ISC_STATUS_LENGTH) { + i = err_status_len + tmp_status_len; + if (i < ISC_STATUS_LENGTH) + { MOVE_FASTER(tmp_status, &status_vector[err_status_len], sizeof(STATUS) * tmp_status_len); /* copy current warning(s) to the status_vector */ - if (warning_count && i + warning_count - 1 < ISC_STATUS_LENGTH) { + if (warning_count && i + warning_count - 1 < ISC_STATUS_LENGTH) + { MOVE_FASTER(warning_status, &status_vector[i - 1], sizeof(STATUS) * warning_count); @@ -323,7 +338,7 @@ void ERRD_punt(void) /* Give up whatever we were doing and return to the user. */ - Firebird::status_longjmp_error::raise(tdsql->tsql_status[1]); + Firebird::status_exception::raise(tdsql->tsql_status[1]); } diff --git a/src/dsql/user_dsql.cpp b/src/dsql/user_dsql.cpp index 38b02d5262..81cd9e631f 100644 --- a/src/dsql/user_dsql.cpp +++ b/src/dsql/user_dsql.cpp @@ -1442,7 +1442,7 @@ static void error_post(STATUS status, ...) // Give up whatever we were doing and return to the user. - Firebird::status_longjmp_error::raise(UDSQL_error->dsql_status[1]); + Firebird::status_exception::raise(UDSQL_error->dsql_status[1]); } diff --git a/src/dudley/expand.cpp b/src/dudley/expand.cpp index 162917ce0d..6b5d4df069 100644 --- a/src/dudley/expand.cpp +++ b/src/dudley/expand.cpp @@ -217,7 +217,7 @@ static void expand_error( **************************************/ DDL_err(number, arg1, arg2, arg3, arg4, arg5); - Firebird::status_longjmp_error::raise(TRUE); + Firebird::status_exception::raise(TRUE); } diff --git a/src/dudley/parse.cpp b/src/dudley/parse.cpp index 776de7aeae..75463bbb0e 100644 --- a/src/dudley/parse.cpp +++ b/src/dudley/parse.cpp @@ -196,7 +196,7 @@ void PARSE_error( USHORT number, TEXT * arg1, TEXT * arg2) **************************************/ DDL_err(number, arg1, arg2, NULL, NULL, NULL); - Firebird::status_longjmp_error::raise(TRUE); + Firebird::status_exception::raise(TRUE); } diff --git a/src/gpre/gpre.cpp b/src/gpre/gpre.cpp index 3afa92c23d..918055721e 100644 --- a/src/gpre/gpre.cpp +++ b/src/gpre/gpre.cpp @@ -20,7 +20,7 @@ // // All Rights Reserved. // Contributor(s): ______________________________________. -// $Id: gpre.cpp,v 1.6 2001-12-24 02:50:49 tamlin Exp $ +// $Id: gpre.cpp,v 1.7 2001-12-29 11:41:22 tamlin Exp $ // Revision 1.2 2000/11/16 15:54:29 fsg // Added new switch -verbose to gpre that will dump // parsed lines to stderr @@ -38,7 +38,7 @@ // //____________________________________________________________ // -// $Id: gpre.cpp,v 1.6 2001-12-24 02:50:49 tamlin Exp $ +// $Id: gpre.cpp,v 1.7 2001-12-29 11:41:22 tamlin Exp $ // #define GPRE_MAIN @@ -925,7 +925,7 @@ void CPR_abort() { ++fatals; - Firebird::status_longjmp_error::raise(1); + Firebird::status_exception::raise(1); } diff --git a/src/gpre/par.cpp b/src/gpre/par.cpp index 715208f989..ad8e4f75fe 100644 --- a/src/gpre/par.cpp +++ b/src/gpre/par.cpp @@ -20,7 +20,7 @@ // // All Rights Reserved. // Contributor(s): ______________________________________. -// $Id: par.cpp,v 1.4 2001-12-24 02:50:49 tamlin Exp $ +// $Id: par.cpp,v 1.5 2001-12-29 11:41:22 tamlin Exp $ // Revision 1.2 2000/11/27 09:26:13 fsg // Fixed bugs in gpre to handle PYXIS forms // and allow edit.e and fred.e to go through @@ -37,7 +37,7 @@ // //____________________________________________________________ // -// $Id: par.cpp,v 1.4 2001-12-24 02:50:49 tamlin Exp $ +// $Id: par.cpp,v 1.5 2001-12-29 11:41:22 tamlin Exp $ // #include "firebird.h" @@ -1156,12 +1156,7 @@ SYM PAR_symbol(enum sym_t type) void PAR_unwind() { - -#pragma FB_COMPILER_MESSAGE("Fix! Wierd jmp_buf use! This might crash!") - - //longjmp(*PAR_jmp_buf, (SLONG) 1); - - Firebird::status_longjmp_error::raise(1); + Firebird::status_exception::raise(1); } diff --git a/src/include/fb_exception.h b/src/include/fb_exception.h index ad69522bd9..5fbe3a9637 100644 --- a/src/include/fb_exception.h +++ b/src/include/fb_exception.h @@ -29,19 +29,19 @@ namespace Firebird { -class status_longjmp_error : public std::exception +class status_exception : public std::exception { public: - explicit status_longjmp_error(STATUS s) + explicit status_exception(STATUS s) : m_s(s) {} - virtual ~status_longjmp_error() {} + virtual ~status_exception() {} virtual const char* what() const - { return "Firebird::status_longjmp_error"; } + { return "Firebird::status_exception"; } STATUS value() const { return m_s; } // TMN: to be moved into its own source file! - static void raise(STATUS s) { throw status_longjmp_error(s); } + static void raise(STATUS s) { throw status_exception(s); } private: STATUS m_s; diff --git a/src/journal/gjrn.cpp b/src/journal/gjrn.cpp index 36b51399d7..fec1e9a90d 100644 --- a/src/journal/gjrn.cpp +++ b/src/journal/gjrn.cpp @@ -206,7 +206,7 @@ int CLIB_ROUTINE main( int argc, exit(FINI_OK); } // try - catch (const Firebird::status_longjmp_error& e) { + catch (const Firebird::status_exception& e) { exit(e.value()); } } @@ -233,7 +233,7 @@ void GJRN_abort( int number) gjrn_msg_partial(0, 0, 0, 0, 0, 0); /* msg 0: gbak:: */ GJRN_printf(1, NULL, NULL, NULL, NULL); /* msg 1: exiting journal utility due to errors */ - Firebird::status_longjmp_error::raise(FINI_ERROR); + Firebird::status_exception::raise(FINI_ERROR); } @@ -441,7 +441,7 @@ static int start_disable( int argc, SCHAR ** argv) if ((*argv)[0] != '-') { if (database) { GJRN_printf(12, database, NULL, NULL, NULL); /* msg 12: database file name (%s) already specified */ - Firebird::status_longjmp_error::raise(FINI_ERROR); + Firebird::status_exception::raise(FINI_ERROR); } database = *argv++; continue; @@ -540,7 +540,7 @@ static int start_dump( int argc, SCHAR ** argv) if ((*argv)[0] != '-') { if (database) { GJRN_printf(12, database, NULL, NULL, NULL); /* msg 12: database file name (%s) already specified */ - Firebird::status_longjmp_error::raise(FINI_ERROR); + Firebird::status_exception::raise(FINI_ERROR); } database = *argv++; continue; @@ -575,7 +575,7 @@ static int start_dump( int argc, SCHAR ** argv) old_file_size = atoi(*argv++); if (old_file_size <= 0) { GJRN_printf(16, NULL, NULL, NULL, NULL); /* msg 16: online dump file size must be greater than zero */ - Firebird::status_longjmp_error::raise(FINI_ERROR); + Firebird::status_exception::raise(FINI_ERROR); } } else @@ -699,7 +699,7 @@ static int start_dump( int argc, SCHAR ** argv) if (handle) gds__detach_database(status_vector, GDS_REF(handle)); - Firebird::status_longjmp_error::raise(FINI_ERROR); + Firebird::status_exception::raise(FINI_ERROR); } if (handle) @@ -759,7 +759,7 @@ static int start_enable( int argc, SCHAR ** argv) if ((*argv)[0] != '-') { if (database) { GJRN_printf(12, database, NULL, NULL, NULL); /* msg 12: database file name (%s) already specified */ - Firebird::status_longjmp_error::raise(FINI_ERROR); + Firebird::status_exception::raise(FINI_ERROR); } database = *argv++; continue; diff --git a/src/jrd/align.cpp b/src/jrd/align.cpp index a93d727d64..e41f4f7aeb 100644 --- a/src/jrd/align.cpp +++ b/src/jrd/align.cpp @@ -17,7 +17,7 @@ * Contributor(s): ______________________________________. */ /* -$Id: align.cpp,v 1.3 2001-12-24 02:50:50 tamlin Exp $ +$Id: align.cpp,v 1.4 2001-12-29 11:41:22 tamlin Exp $ */ #include "firebird.h" @@ -156,5 +156,5 @@ static int check_double() static void handler() { - Firebird::status_longjmp_error::raise(1); + Firebird::status_exception::raise(1); } diff --git a/src/jrd/err.cpp b/src/jrd/err.cpp index 563d6b1a96..f090242c6e 100644 --- a/src/jrd/err.cpp +++ b/src/jrd/err.cpp @@ -522,7 +522,7 @@ void DLL_EXPORT ERR_punt(void) #pragma FB_COMPILER_MESSAGE("FIXME! C functions can not throw! FIXME!") - Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]); + Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]); } #endif @@ -596,7 +596,7 @@ void DLL_EXPORT ERR_warning(STATUS status, ...) * * Functional description * Write an error out to the status vector but - * don't longjmp back to the user. This allows + * don't throw an exception. This allows * sending a warning message back to the user * without stopping execution of a request. Note * that subsequent errors can supersede this one. diff --git a/src/jrd/exe.cpp b/src/jrd/exe.cpp index 3470c2dc92..faf87e8754 100644 --- a/src/jrd/exe.cpp +++ b/src/jrd/exe.cpp @@ -21,7 +21,7 @@ * Contributor(s): ______________________________________. */ /* -$Id: exe.cpp,v 1.5 2001-12-28 06:31:38 tamlin Exp $ +$Id: exe.cpp,v 1.6 2001-12-29 11:41:22 tamlin Exp $ */ #include "firebird.h" @@ -116,7 +116,7 @@ static NOD send_msg(TDBB, register NOD); static void set_error(TDBB, XCP); static NOD stall(TDBB, register NOD); static NOD store(TDBB, register NOD, SSHORT); -static BOOLEAN test_error(TDBB, XCP); +static BOOLEAN test_error(TDBB, const XCP); static void trigger_failure(TDBB, REQ); static void validate(TDBB, NOD); @@ -651,7 +651,7 @@ void EXE_receive(TDBB tdbb, transaction->tra_save_point = request->req_proc_sav_point; request->req_proc_sav_point = save_sav_point; release_proc_save_points(request); - Firebird::status_longjmp_error::raise(-1); + Firebird::status_exception::raise(-1); } } @@ -1171,7 +1171,7 @@ static NOD erase(TDBB tdbb, NOD node, SSHORT which_trig) } // try catch (...) { - Firebird::status_longjmp_error::raise(-1); + Firebird::status_exception::raise(-1); } /* if the stream is navigational, it is now positioned on a crack */ @@ -1336,7 +1336,7 @@ static void execute_procedure(TDBB tdbb, NOD node) proc_request->req_flags &= ~(req_in_use | req_proc_fetch); proc_request->req_timestamp = 0; delete temp_buffer; - Firebird::status_longjmp_error::raise(-1); + Firebird::status_exception::raise(-1); } tdbb->tdbb_default = old_pool; @@ -1424,7 +1424,7 @@ static REQ execute_triggers(TDBB tdbb, release_triggers(tdbb, vector); } if (!trigger) { - Firebird::status_longjmp_error::raise(-1); + Firebird::status_exception::raise(-1); } return trigger; } @@ -1636,7 +1636,7 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) } \ catch (std::exception&) { \ if (dbb->dbb_flags & DBB_bugcheck) { \ - Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]); \ + Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]); \ } \ BUGCHECK (290); /* msg 290 error during savepoint backout */ \ } @@ -1663,15 +1663,16 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) VOLATILE NOD node = in_node; -/* Catch errors so we can unwind cleanly */ + // Catch errors so we can unwind cleanly SSHORT error_pending = FALSE; try { -/* Execute stuff until we drop */ + // Execute stuff until we drop - while (node && !(request->req_flags & req_stall)) { + while (node && !(request->req_flags & req_stall)) + { #ifdef MULTI_THREAD if (request->req_operation == req::req_evaluate && @@ -1829,8 +1830,9 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) /* If an error is still pending when the savepoint is supposed to end, then the application didn't handle the error and the savepoint should be undone. */ - if (error_pending) + if (error_pending) { ++transaction->tra_save_point->sav_verb_count; + } VERB_CLEANUP; } @@ -1874,9 +1876,10 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) case req::req_unwind: { - VOLATILE NOD handlers, *ptr, *end; + VOLATILE NOD *ptr, *end; - if (request->req_flags & req_leave) { + if (request->req_flags & req_leave) + { /** Although the req_operation is set to req_unwind it is not an error case if req_leave bit is set. req_leave bit indicates that we hit an EXIT @@ -1886,7 +1889,8 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) node = node->nod_parent; break; } - if (transaction != dbb->dbb_sys_trans) { + if (transaction != dbb->dbb_sys_trans) + { MOVE_FAST((SCHAR *) request + node->nod_impure, &count, sizeof(SLONG)); /* Since there occurred an error (req_unwind), undo all savepoints @@ -1899,18 +1903,21 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) VERB_CLEANUP; } } - if ( (handlers = node->nod_arg[e_blk_handlers]) ) { + + VOLATILE NOD handlers = node->nod_arg[e_blk_handlers]; + if (handlers) + { ULONG prev_req_error_handler; node = node->nod_parent; for (ptr = handlers->nod_arg, end = ptr + handlers->nod_count; ptr < end; ptr++) - if (test_error - (tdbb, - reinterpret_cast < - xcp * - >((*ptr)->nod_arg[e_err_conditions]))) { + { + const XCP pXcp = + reinterpret_cast((*ptr)->nod_arg[e_err_conditions]); + if (test_error(tdbb, pXcp)) + { request->req_operation = req::req_evaluate; node = (*ptr)->nod_arg[e_err_action]; error_pending = FALSE; @@ -1949,19 +1956,23 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) tdbb->tdbb_request = request; /* The error is dealt with by the application, cleanup this block's savepoint. */ - if (transaction != dbb->dbb_sys_trans) { - for (save_point = - transaction->tra_save_point; - save_point - && count <= save_point->sav_number; - save_point = - transaction->tra_save_point) - VERB_CLEANUP; + if (transaction != dbb->dbb_sys_trans) + { + for (save_point = transaction->tra_save_point; + save_point && + count <= save_point->sav_number; + save_point = transaction->tra_save_point) + { + VERB_CLEANUP; + } } } + } } else + { node = node->nod_parent; + } /* If the application didn't have an error handler, then the error will still be pending. Undo the block by @@ -2307,13 +2318,15 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) default: BUGCHECK(168); /* msg 168 looper: action not yet implemented */ } + #ifdef HSDEBUGSTACK TestStack(); #endif #if defined(DEBUG_GDS_ALLOC) && defined(PROD_BUILD) memory_count++; - if ((memory_count % memory_debug) == 0) + if ((memory_count % memory_debug) == 0) { ALL_check_memory(); + } #endif } @@ -2324,7 +2337,8 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) #ifdef SCROLLABLE_CURSORS && !(request->req_flags & req_async_processing) #endif - ) { + ) + { request->req_flags &= ~(req_active | req_reserved); request->req_timestamp = 0; release_blobs(tdbb, request); @@ -2335,9 +2349,9 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) tdbb->tdbb_transaction = (tdbb->tdbb_request = old_request) ? old_request->req_transaction : NULL; -/* in the case of a pending error condition (one which did not - result in a exception to the top of looper), we need to delete - the last savepoint */ + // in the case of a pending error condition (one which did not + // result in a exception to the top of looper), we need to + // delete the last savepoint if (error_pending) { if (transaction != dbb->dbb_sys_trans) { @@ -2358,9 +2372,9 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) ERR_punt(); } -/* if the request was aborted, assume that we have already - longjmp'ed to the top of looper, and therefore that the last - savepoint has already been deleted */ + // if the request was aborted, assume that we have already + // longjmp'ed to the top of looper, and therefore that the + // last savepoint has already been deleted if (request->req_flags & req_abort) { ERR_post(gds_req_sync, 0); @@ -2370,7 +2384,7 @@ static NOD looper(TDBB tdbb, REQ request, NOD in_node) catch (...) { /* If the database is already bug-checked, then get out. */ if (dbb->dbb_flags & DBB_bugcheck) { - Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]); + Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]); } #ifdef GATEWAY @@ -2612,7 +2626,7 @@ static NOD modify(TDBB tdbb, register NOD node, SSHORT which_trig) } // try catch (...) { - Firebird::status_longjmp_error::raise(-1); + Firebird::status_exception::raise(-1); } /* if the stream is navigational, we must position the stream on the new @@ -3403,30 +3417,25 @@ static NOD store(TDBB tdbb, register NOD node, SSHORT which_trig) * Execute a STORE statement. * **************************************/ - DBB dbb; - register REQ request; - STA impure; + REQ trigger; FMT format; - SSHORT stream, n; + SSHORT n; USHORT length; REC record; - RPB *rpb; DSC *desc; - REL relation; - TRA transaction; register UCHAR *p; SET_TDBB(tdbb); - dbb = tdbb->tdbb_database; + DBB dbb = tdbb->tdbb_database; BLKCHK(node, type_nod); - request = tdbb->tdbb_request; - transaction = request->req_transaction; - impure = (STA) ((SCHAR *) request + node->nod_impure); - stream = (USHORT) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream]; - rpb = &request->req_rpb[stream]; - relation = rpb->rpb_relation; + REQ request = tdbb->tdbb_request; + TRA transaction = request->req_transaction; + STA impure = (STA) ((SCHAR *) request + node->nod_impure); + SSHORT stream = (USHORT) node->nod_arg[e_sto_relation]->nod_arg[e_rel_stream]; + RPB* rpb = &request->req_rpb[stream]; + REL relation = rpb->rpb_relation; switch (request->req_operation) { case req::req_evaluate: @@ -3448,71 +3457,83 @@ static NOD store(TDBB tdbb, register NOD node, SSHORT which_trig) (which_trig != POST_TRIG) && (trigger = execute_triggers(tdbb, &relation->rel_pre_store, 0, record))) - trigger_failure(tdbb, trigger); + { + trigger_failure(tdbb, trigger); + } #endif - if (node->nod_arg[e_sto_validate]) + if (node->nod_arg[e_sto_validate]) { validate(tdbb, node->nod_arg[e_sto_validate]); + } /* For optimum on-disk record compression, zero all unassigned fields. In addition, zero the tail of assigned varying fields so that previous remnants don't defeat compression efficiency. */ - for (n = 0; n < format->fmt_count; n++) { + for (n = 0; n < format->fmt_count; n++) + { desc = &format->fmt_desc[n]; - if (!desc->dsc_address) + if (!desc->dsc_address) { continue; - p = record->rec_data + (SLONG) desc->dsc_address; - if (TEST_NULL(record, n)) { - if ( (length = desc->dsc_length) ) - do - *p++ = 0; - while (--length); } - else if (desc->dsc_dtype == dtype_varying) { - VARY *vary; - - vary = (VARY *) p; - if ((length = desc->dsc_length - sizeof(USHORT)) > - vary->vary_length) { + p = record->rec_data + (SLONG) desc->dsc_address; + if (TEST_NULL(record, n)) + { + length = desc->dsc_length; + if (length) { + do { + *p++ = 0; + } while (--length); + } + } + else if (desc->dsc_dtype == dtype_varying) + { + VARY* vary = (VARY *) p; + length = desc->dsc_length - sizeof(USHORT); + if (length > vary->vary_length) + { p = reinterpret_cast(vary->vary_string + vary->vary_length); length -= vary->vary_length; - do + do { *p++ = 0; - while (--length); + } while (--length); } } } #ifndef GATEWAY - if (relation->rel_file) + if (relation->rel_file) { EXT_store(rpb, reinterpret_cast < int *>(transaction)); - else if (!relation->rel_view_rse) { + } + else if (!relation->rel_view_rse) + { SSHORT bad_index; REL bad_relation; - IDX_E error_code; VIO_store(tdbb, rpb, transaction); - if ((error_code = IDX_store(tdbb, + IDX_E error_code = IDX_store(tdbb, rpb, transaction, &bad_relation, - reinterpret_cast < - USHORT * - >(&bad_index)))) - ERR_duplicate_error(error_code, bad_relation, bad_index); + reinterpret_cast(&bad_index)); + if (error_code) { + ERR_duplicate_error(error_code, bad_relation, bad_index); + } } if (relation->rel_post_store && (which_trig != PRE_TRIG) && (trigger = execute_triggers(tdbb, &relation->rel_post_store, 0, record))) - trigger_failure(tdbb, trigger); + { + trigger_failure(tdbb, trigger); + } request->req_records_inserted++; - if (transaction != dbb->dbb_sys_trans) + if (transaction != dbb->dbb_sys_trans) { --transaction->tra_save_point->sav_verb_count; + } #else VIO_store(tdbb, rpb, transaction, node->nod_arg[e_sto_sql]); #endif @@ -3543,10 +3564,12 @@ static NOD store(TDBB tdbb, register NOD node, SSHORT which_trig) #ifndef GATEWAY p = record->rec_data; - if ( (n = (format->fmt_count + 7) >> 3) ) - do + n = (format->fmt_count + 7) >> 3; + if (n) { + do { *p++ = 0xff; - while (--n); + } while (--n); + } #else EXE_set_fields_null(tdbb, record, format); #endif @@ -3596,7 +3619,7 @@ static NOD stream(TDBB tdbb, register NOD node) #endif -static BOOLEAN test_error(TDBB tdbb, XCP conditions) +static BOOLEAN test_error(TDBB tdbb, const XCP conditions) { /************************************** * @@ -3608,15 +3631,15 @@ static BOOLEAN test_error(TDBB tdbb, XCP conditions) * Test for match of current state with list of error conditions. * **************************************/ - SSHORT i, sqlcode; - STATUS *status_vector; SET_TDBB(tdbb); - status_vector = tdbb->tdbb_status_vector; - sqlcode = gds__sqlcode(status_vector); + STATUS* status_vector = tdbb->tdbb_status_vector; + SSHORT sqlcode = gds__sqlcode(status_vector); - for (i = 0; i < conditions->xcp_count; i++) { - switch (conditions->xcp_rpt[i].xcp_type) { + for (SSHORT i = 0; i < conditions->xcp_count; ++i) + { + switch (conditions->xcp_rpt[i].xcp_type) + { case xcp_sql_code: if (sqlcode == conditions->xcp_rpt[i].xcp_code) { status_vector[0] = 0; @@ -3635,7 +3658,8 @@ static BOOLEAN test_error(TDBB tdbb, XCP conditions) case xcp_xcp_code: if ((status_vector[1] == gds_except) && - (status_vector[3] == conditions->xcp_rpt[i].xcp_code)) { + (status_vector[3] == conditions->xcp_rpt[i].xcp_code)) + { status_vector[0] = 0; status_vector[1] = 0; return TRUE; @@ -3666,37 +3690,47 @@ static void trigger_failure(TDBB tdbb, REQ trigger) * Trigger failed, report error. * **************************************/ - TEXT *msg; - STATUS code; SET_TDBB(tdbb); EXE_unwind(tdbb, trigger); + trigger->req_attachment = NULL; trigger->req_flags &= ~req_in_use; trigger->req_timestamp = 0; - if (trigger->req_flags & req_leave) { + + if (trigger->req_flags & req_leave) + { trigger->req_flags &= ~req_leave; + TEXT* msg; if (trigger->req_trg_name && - (msg = - MET_trigger_msg(tdbb, trigger->req_trg_name, - trigger->req_label))) { - if (trigger->req_flags & req_sys_trigger) { - code = PAR_symbol_to_gdscode(msg); + (msg = MET_trigger_msg(tdbb, + trigger->req_trg_name, + trigger->req_label))) + { + if (trigger->req_flags & req_sys_trigger) + { + STATUS code = PAR_symbol_to_gdscode(msg); if (code) + { ERR_post(gds_integ_fail, gds_arg_number, (SLONG) trigger->req_label, gds_arg_gds, code, 0); + } } ERR_post(gds_integ_fail, gds_arg_number, (SLONG) trigger->req_label, gds_arg_gds, gds_random, gds_arg_string, msg, 0); } else + { ERR_post(gds_integ_fail, gds_arg_number, (SLONG) trigger->req_label, 0); + } } else + { ERR_punt(); + } } #endif @@ -3713,11 +3747,12 @@ static void validate(TDBB tdbb, NOD list) * Execute a list of validation expressions. * **************************************/ - NOD *ptr1, *ptr2; SET_TDBB(tdbb); BLKCHK(list, type_nod); + NOD *ptr1, *ptr2; + for (ptr1 = list->nod_arg, ptr2 = ptr1 + list->nod_count; ptr1 < ptr2; ptr1++) { diff --git a/src/jrd/gds.cpp b/src/jrd/gds.cpp index 5386353a52..dace62ed10 100644 --- a/src/jrd/gds.cpp +++ b/src/jrd/gds.cpp @@ -3868,7 +3868,7 @@ static void blr_error(CTL control, TEXT * string, TEXT * arg1) blr_format(control, string, arg1); offset = 0; PRINT_LINE; - Firebird::status_longjmp_error::raise(-1); + Firebird::status_exception::raise(-1); } diff --git a/src/jrd/ib_stdio.cpp b/src/jrd/ib_stdio.cpp index d78fa0f7c4..ab6a45e419 100644 --- a/src/jrd/ib_stdio.cpp +++ b/src/jrd/ib_stdio.cpp @@ -87,7 +87,7 @@ */ /* -$Id: ib_stdio.cpp,v 1.3 2001-12-24 02:50:51 tamlin Exp $ +$Id: ib_stdio.cpp,v 1.4 2001-12-29 11:41:23 tamlin Exp $ */ #include "firebird.h" @@ -371,8 +371,8 @@ int ib__sflush(register IB_FILE * fp) n = fp->_p - p; /* write this much */ /* - * Set these immediately to avoid problems with longjmp and to allow - * exchange buffering (via setvbuf) in user write function. + * Set these immediately to allow exchange buffering + * (via setvbuf) in user write function. */ fp->_p = p; fp->_w = t & (IB__SLBF | IB__SNBF) ? 0 : fp->_bf._size; @@ -4012,7 +4012,7 @@ int ib__swbuf(register int c, register IB_FILE * fp) register int n; /* - * In case we cannot write, or longjmp takes us out early, + * In case we cannot write, or an exception takes us out early, * make sure _w is 0 (if fully- or un-buffered) or -_bf._size * (if line buffered) so that we will get called again. * If we did not do this, a sufficient number of ib_putc() diff --git a/src/jrd/iberr.cpp b/src/jrd/iberr.cpp index 2796ff3ba6..8f4a9b706f 100644 --- a/src/jrd/iberr.cpp +++ b/src/jrd/iberr.cpp @@ -162,6 +162,6 @@ static void post_error( } if (longjmp_addr) { - Firebird::status_longjmp_error::raise(status_vector[1]); + Firebird::status_exception::raise(status_vector[1]); } } diff --git a/src/jrd/lck.cpp b/src/jrd/lck.cpp index 256aaf5f68..f7a1845400 100644 --- a/src/jrd/lck.cpp +++ b/src/jrd/lck.cpp @@ -61,7 +61,7 @@ extern "C" { #define getpid() 0 #endif -static void bug_lck(TEXT *); +static void bug_lck(TEXT*); static void check_lock(LCK, USHORT); static BOOLEAN compatible(LCK, LCK, USHORT); static void enqueue(TDBB, LCK, USHORT, SSHORT); @@ -485,12 +485,10 @@ SLONG LCK_get_owner_handle(TDBB tdbb, enum lck_t lock_type) * return the right kind of lock owner given a lock type. * **************************************/ - DBB dbb; - ATT attachment; SET_TDBB(tdbb); - dbb = tdbb->tdbb_database; - attachment = tdbb->tdbb_attachment; + DBB dbb = tdbb->tdbb_database; + ATT attachment = tdbb->tdbb_attachment; switch (lock_type) { case LCK_database: case LCK_bdb: @@ -513,7 +511,7 @@ SLONG LCK_get_owner_handle(TDBB tdbb, enum lck_t lock_type) return LCK_OWNER_HANDLE_ATT; default: bug_lck("Invalid lock type in LCK_get_owner_handle ()"); - /* Not Reached - bug_lck longjmp's out */ + /* Not Reached - bug_lck calls ERR_post */ return 0; } } @@ -924,7 +922,7 @@ void LCK_write_data(LCK lock, SLONG data) #endif -static void bug_lck(TEXT * string) +static void bug_lck(TEXT* string) { /************************************** * diff --git a/src/jrd/nav.cpp b/src/jrd/nav.cpp index de0cf5eb0d..d129f2cd3d 100644 --- a/src/jrd/nav.cpp +++ b/src/jrd/nav.cpp @@ -1154,7 +1154,7 @@ static BOOLEAN find_dbkey(RSB rsb, ULONG record_number) catch (...) { CCH_RELEASE(tdbb, &window); tdbb->tdbb_setjmp = (UCHAR *) old_env; - Firebird::status_longjmp_error::raise(-1); + Firebird::status_exception::raise(-1); } } #endif @@ -1350,7 +1350,7 @@ static BOOLEAN find_record( catch (...) { CCH_RELEASE(tdbb, &window); tdbb->tdbb_setjmp = (UCHAR *) old_env; - Firebird::status_longjmp_error::raise(-1); + Firebird::status_exception::raise(-1); } } #endif @@ -1710,7 +1710,7 @@ static BOOLEAN get_record( tdbb->tdbb_attachment->att_flags |= (old_att_flags & ATT_no_cleanup); tdbb->tdbb_setjmp = (UCHAR *) old_env; - Firebird::status_longjmp_error::raise(-1); + Firebird::status_exception::raise(-1); } return result; diff --git a/src/jrd/scl.epp b/src/jrd/scl.epp index 8c950d6bdd..41475abdfc 100644 --- a/src/jrd/scl.epp +++ b/src/jrd/scl.epp @@ -288,8 +288,7 @@ void SCL_check_index( TDBB tdbb, TEXT * index_name, USHORT mask) if (request) { CMP_release(tdbb, (REQ) request); } -// LONGJMP(*(JMP_BUF*)&tdbb->tdbb_setjmp, (int) tdbb->tdbb_status_vector[1]); - Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]); + Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]); } } @@ -977,8 +976,7 @@ static BOOLEAN check_user_group(CONST TEXT* acl, catch (...) { tdbb->tdbb_setjmp = (UCHAR *) old_env; delete buffer; -// LONGJMP(*(JMP_BUF*)&tdbb->tdbb_setjmp, (int) tdbb->tdbb_status_vector[1]); - Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]); + Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]); } return (n != number); @@ -1129,8 +1127,7 @@ static SLONG compute_access(TDBB tdbb, catch (...) { tdbb->tdbb_setjmp = (UCHAR *) old_env; delete str_buffer; -// LONGJMP(*(JMP_BUF*)&tdbb->tdbb_setjmp, (int) tdbb->tdbb_status_vector[1]); - Firebird::status_longjmp_error::raise(tdbb->tdbb_status_vector[1]); + Firebird::status_exception::raise(tdbb->tdbb_status_vector[1]); } return privileges; diff --git a/src/qli/dtr.cpp b/src/qli/dtr.cpp index ef18a3567f..7aa9513c10 100644 --- a/src/qli/dtr.cpp +++ b/src/qli/dtr.cpp @@ -522,7 +522,7 @@ static USHORT process_statement( USHORT flush_flag) return FALSE; } // try - catch (const Firebird::status_longjmp_error& e) { + catch (const Firebird::status_exception& e) { GEN_release(); return e.value(); } diff --git a/src/qli/err.cpp b/src/qli/err.cpp index 2fc7080983..387d8eb447 100644 --- a/src/qli/err.cpp +++ b/src/qli/err.cpp @@ -95,7 +95,7 @@ void ERRQ_database_error( DBB dbb, STATUS * status_vector) ERRQ_msg_put(458, dbb->dbb_filename, NULL, NULL, NULL, NULL); /* Msg458 ** connection to database %s lost ** */ if (QLI_env) { - Firebird::status_longjmp_error::raise(-1); + Firebird::status_exception::raise(-1); } } @@ -122,7 +122,7 @@ void ERRQ_error( ERRQ_error_format(number, arg1, arg2, arg3, arg4, arg5); if (QLI_env) - Firebird::status_longjmp_error::raise(-1); + Firebird::status_exception::raise(-1); else { ERRQ_pending(); ERRQ_exit(FINI_ERROR); diff --git a/src/remote/allr.cpp b/src/remote/allr.cpp index f30abe7ff5..8e3a7f0f01 100644 --- a/src/remote/allr.cpp +++ b/src/remote/allr.cpp @@ -95,7 +95,7 @@ UCHAR* DLL_EXPORT ALLR_alloc(ULONG size) *status_vector = gds_arg_end; } - Firebird::status_longjmp_error::raise(gds_virmemexh); + Firebird::status_exception::raise(gds_virmemexh); return NULL; /* compiler silencer */ } @@ -138,7 +138,7 @@ BLK DLL_EXPORT ALLR_block(UCHAR type, ULONG count) } } - Firebird::status_longjmp_error::raise(gds_bug_check); + Firebird::status_exception::raise(gds_bug_check); } // Compute block length, recasting count to make sure the calculation diff --git a/src/remote/interface.cpp b/src/remote/interface.cpp index 5deb780896..e76b75510c 100644 --- a/src/remote/interface.cpp +++ b/src/remote/interface.cpp @@ -4678,7 +4678,7 @@ static BOOLEAN batch_dsql_fetch(trdb* trdb, statement->rsr_rows_pending = 0; --statement->rsr_batch_count; dequeue_receive(port); - Firebird::status_longjmp_error::raise(user_status[1]); + Firebird::status_exception::raise(user_status[1]); } if (packet->p_operation != op_fetch_response) { @@ -4839,7 +4839,7 @@ static BOOLEAN batch_gds_receive(trdb* trdb, tail->rrq_rows_pending = 0; --tail->rrq_batch_count; dequeue_receive(port); - Firebird::status_longjmp_error::raise(user_status[1]); + Firebird::status_exception::raise(user_status[1]); } if (packet->p_operation != op_send) { @@ -5844,7 +5844,7 @@ static void move_error( STATUS status, ...) if (p_args >= end_args) end_args[-1] = gds_arg_end; - Firebird::status_longjmp_error::raise(trdb->trdb_status_vector[1]); + Firebird::status_exception::raise(trdb->trdb_status_vector[1]); } diff --git a/src/remote/server.cpp b/src/remote/server.cpp index 38fb55d14e..d19ba32278 100644 --- a/src/remote/server.cpp +++ b/src/remote/server.cpp @@ -333,7 +333,7 @@ void SRVR_multi_thread( PORT main_port, USHORT flags) #ifdef DEV_BUILD #ifdef DEBUG if ((request_count++ % 4) == 0) { - Firebird::status_longjmp_error::raise(gds__virmemexh); + Firebird::status_exception::raise(gds__virmemexh); } #endif /* DEBUG */ #endif /* DEV_BUILD */ @@ -357,7 +357,7 @@ void SRVR_multi_thread( PORT main_port, USHORT flags) #ifdef DEV_BUILD #ifdef DEBUG if ((request_count % 5) == 0) { - Firebird::status_longjmp_error::raise(gds__virmemexh); + Firebird::status_exception::raise(gds__virmemexh); } #endif /* DEBUG */ #endif /* DEV_BUILD */ diff --git a/src/utilities/dba.epp b/src/utilities/dba.epp index 0787f11f4c..7208c713fc 100644 --- a/src/utilities/dba.epp +++ b/src/utilities/dba.epp @@ -227,11 +227,8 @@ static struct tdba *gddba; #define RESTORE_THREAD_DATA #endif -//#define EXIT(code) { tddba->exit_code = code; \ -// LONGJMP(*reinterpret_cast(&tddba->dba_env), 1); } - #define EXIT(code) { tddba->exit_code = code; \ - Firebird::status_longjmp_error::raise(0); } + Firebird::status_exception::raise(0); } #define GSTAT_MSG_FAC 21 diff --git a/src/utilities/dba_full.epp b/src/utilities/dba_full.epp index 697a014c20..0dac66a33d 100644 --- a/src/utilities/dba_full.epp +++ b/src/utilities/dba_full.epp @@ -36,6 +36,7 @@ #include "../jrd/isc_f_proto.h" #include "../jrd/thd.h" #include "../jrd/enc_proto.h" +#include "../include/fb_exception.h" #ifdef WIN_NT #include @@ -210,7 +211,7 @@ static struct tdba *gddba; #endif #define EXIT(code) { tddba->exit_code = code; \ - LONGJMP(tddba->dba_env, 1); } + Firebird::status_exception::raise(1); } #ifdef NETWARE_386 diff --git a/src/utilities/gsec.h b/src/utilities/gsec.h index 0d2b7f936c..c8065135f5 100644 --- a/src/utilities/gsec.h +++ b/src/utilities/gsec.h @@ -87,7 +87,7 @@ typedef int (DLL_EXPORT* OUTPUTPROC) (SLONG, UCHAR *); #define EXIT(code) { tdsec->tsec_exit_code = (code); \ if (tdsec->tsec_env != NULL) \ - Firebird::status_longjmp_error::raise(1); } + Firebird::status_exception::raise(1); } typedef struct user_data { int operation; /* what's to be done */ diff --git a/src/wal/walw.cpp b/src/wal/walw.cpp index b3a227835b..3a844d4a71 100644 --- a/src/wal/walw.cpp +++ b/src/wal/walw.cpp @@ -1767,7 +1767,7 @@ static void report_walw_bug_or_error( ib_fprintf(DEBUG_FD, "WAL writer encountered error, code=%d\n", code); } - Firebird::status_longjmp_error::raise(status_vector[1]); + Firebird::status_exception::raise(status_vector[1]); }