diff options
author | Andrei Elkin <aelkin@mysql.com> | 2009-10-01 20:22:44 +0300 |
---|---|---|
committer | Andrei Elkin <aelkin@mysql.com> | 2009-10-01 20:22:44 +0300 |
commit | 737910fb11e0fe8d2628bf8091c3a7b0de194db2 (patch) | |
tree | 4fc7c06ce588219a390c0beaf37745e0903d2546 /include | |
parent | d91aa57c38e9baf0bbf31a596e79bea2504e50bb (diff) | |
parent | a367c88c9eef26242756efa4026962c71c5429a9 (diff) | |
download | mariadb-git-737910fb11e0fe8d2628bf8091c3a7b0de194db2.tar.gz |
merge from 5.1-rpl+2 repo to a local branch with HB and bug@27808 fixes
Diffstat (limited to 'include')
-rw-r--r-- | include/my_dbug.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/my_dbug.h b/include/my_dbug.h index a77e439b5db..7df080bee72 100644 --- a/include/my_dbug.h +++ b/include/my_dbug.h @@ -22,6 +22,7 @@ extern "C" { #if !defined(DBUG_OFF) && !defined(_lint) struct _db_code_state_; extern int _db_keyword_(struct _db_code_state_ *cs, const char *keyword); +extern int _db_keywords_(const char *, const char *); extern int _db_strict_keyword_(const char *keyword); extern int _db_explain_(struct _db_code_state_ *cs, char *buf, size_t len); extern int _db_explain_init_(char *buf, size_t len); @@ -46,6 +47,7 @@ extern void _db_end_(void); extern void _db_lock_file_(void); extern void _db_unlock_file_(void); extern FILE *_db_fp_(void); +extern const char* _db_get_func_(void); #define DBUG_ENTER(a) const char *_db_func_, *_db_file_; uint _db_level_; \ char **_db_framep_; \ @@ -81,6 +83,20 @@ extern FILE *_db_fp_(void); #define DBUG_EXPLAIN(buf,len) _db_explain_(0, (buf),(len)) #define DBUG_EXPLAIN_INITIAL(buf,len) _db_explain_init_((buf),(len)) #define IF_DBUG(A) A +#define _DBUG_MAX_FUNC_NAME_ 255 +#define DBUG_CHECK_CRASH(func, op) \ + do { \ + if (_db_keywords_((func), (op))) \ + { abort(); } \ + } while (0) +#define DBUG_CRASH_ENTER(func) \ + DBUG_ENTER(func); DBUG_CHECK_CRASH(func, "_crash_enter") +#define DBUG_CRASH_RETURN(val) \ + do {DBUG_CHECK_CRASH(_db_get_func_(), "_crash_return"); \ + DBUG_RETURN(val);} while(0) +#define DBUG_CRASH_VOID_RETURN \ + do {DBUG_CHECK_CRASH (_db_get_func_(), "_crash_return"); \ + DBUG_VOID_RETURN;} while(0) #else /* No debugger */ #define DBUG_ENTER(a1) @@ -108,6 +124,9 @@ extern FILE *_db_fp_(void); #define DBUG_EXPLAIN(buf,len) #define DBUG_EXPLAIN_INITIAL(buf,len) #define IF_DBUG(A) +#define DBUG_CRASH_ENTER(func) +#define DBUG_CRASH_RETURN(val) do { return(val); } while(0) +#define DBUG_CRASH_VOID_RETURN do { return; } while(0) #endif #ifdef __cplusplus } |