summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAndrei Elkin <aelkin@mysql.com>2009-11-06 18:35:04 +0200
committerAndrei Elkin <aelkin@mysql.com>2009-11-06 18:35:04 +0200
commit69d6fcbd3b225c177c4e0e3af65aa2cf9494eff3 (patch)
tree44a02955b1dc18fc2e94cd0b4dc6ef62cd81d936 /include
parentea84da107a8d8f6b061d00dcf76c3369f8a96868 (diff)
parent684b1d39ac7eab6ff5d9095aaa25dcea35b88a28 (diff)
downloadmariadb-git-69d6fcbd3b225c177c4e0e3af65aa2cf9494eff3.tar.gz
merging 5.1 main -> rpl+2. Some manual work required mostly due to bug46640
Diffstat (limited to 'include')
-rw-r--r--include/my_dbug.h58
-rw-r--r--include/my_global.h6
-rw-r--r--include/my_sys.h12
3 files changed, 62 insertions, 14 deletions
diff --git a/include/my_dbug.h b/include/my_dbug.h
index 7df080bee72..0451a868aa4 100644
--- a/include/my_dbug.h
+++ b/include/my_dbug.h
@@ -16,6 +16,29 @@
#ifndef _dbug_h
#define _dbug_h
+#if defined(__cplusplus) && !defined(DBUG_OFF)
+class Dbug_violation_helper
+{
+public:
+ inline Dbug_violation_helper() :
+ _entered(TRUE)
+ { }
+
+ inline ~Dbug_violation_helper()
+ {
+ assert(!_entered);
+ }
+
+ inline void leave()
+ {
+ _entered= FALSE;
+ }
+
+private:
+ bool _entered;
+};
+#endif /* C++ */
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -49,11 +72,31 @@ 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_; \
- _db_enter_ (a,__FILE__,__LINE__,&_db_func_,&_db_file_,&_db_level_, \
- &_db_framep_)
+#ifdef __cplusplus
+
+#define DBUG_ENTER(a) \
+ const char *_db_func_, *_db_file_; \
+ uint _db_level_; \
+ char **_db_framep_; \
+ Dbug_violation_helper dbug_violation_helper; \
+ _db_enter_ (a, __FILE__, __LINE__, &_db_func_, &_db_file_, \
+ &_db_level_, &_db_framep_)
+#define DBUG_VIOLATION_HELPER_LEAVE dbug_violation_helper.leave()
+
+#else /* C */
+
+#define DBUG_ENTER(a) \
+ const char *_db_func_, *_db_file_; \
+ uint _db_level_; \
+ char **_db_framep_; \
+ _db_enter_ (a, __FILE__, __LINE__, &_db_func_, &_db_file_, \
+ &_db_level_, &_db_framep_)
+#define DBUG_VIOLATION_HELPER_LEAVE do { } while(0)
+
+#endif /* C++ */
+
#define DBUG_LEAVE \
+ DBUG_VIOLATION_HELPER_LEAVE; \
_db_return_ (__LINE__, &_db_func_, &_db_file_, &_db_level_)
#define DBUG_RETURN(a1) do {DBUG_LEAVE; return(a1);} while(0)
#define DBUG_VOID_RETURN do {DBUG_LEAVE; return;} while(0)
@@ -101,6 +144,7 @@ extern const char* _db_get_func_(void);
#define DBUG_ENTER(a1)
#define DBUG_LEAVE
+#define DBUG_VIOLATION_HELPER_LEAVE
#define DBUG_RETURN(a1) do { return(a1); } while(0)
#define DBUG_VOID_RETURN do { return; } while(0)
#define DBUG_EXECUTE(keyword,a1) do { } while(0)
@@ -109,13 +153,13 @@ extern const char* _db_get_func_(void);
#define DBUG_EVALUATE_IF(keyword,a1,a2) (a2)
#define DBUG_PRINT(keyword,arglist) do { } while(0)
#define DBUG_PUSH(a1)
-#define DBUG_SET(a1)
-#define DBUG_SET_INITIAL(a1)
+#define DBUG_SET(a1) do { } while(0)
+#define DBUG_SET_INITIAL(a1) do { } while(0)
#define DBUG_POP()
#define DBUG_PROCESS(a1)
#define DBUG_SETJMP(a1) setjmp(a1)
#define DBUG_LONGJMP(a1) longjmp(a1)
-#define DBUG_DUMP(keyword,a1,a2)
+#define DBUG_DUMP(keyword,a1,a2) do { } while(0)
#define DBUG_END()
#define DBUG_ASSERT(A) do { } while(0)
#define DBUG_LOCK_FILE
diff --git a/include/my_global.h b/include/my_global.h
index e7d0026ac53..0f312f13bf0 100644
--- a/include/my_global.h
+++ b/include/my_global.h
@@ -558,12 +558,6 @@ int __void__;
#define LINT_INIT(var)
#endif
-#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || defined(HAVE_purify)
-#define PURIFY_OR_LINT_INIT(var) var=0
-#else
-#define PURIFY_OR_LINT_INIT(var)
-#endif
-
/*
Suppress uninitialized variable warning without generating code.
diff --git a/include/my_sys.h b/include/my_sys.h
index 4e85525e4b0..344869fac2d 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -67,6 +67,7 @@ extern int NEAR my_errno; /* Last error in mysys */
#define MY_HOLD_ON_ERROR 256 /* my_realloc() ; Return old ptr on error */
#define MY_DONT_OVERWRITE_FILE 1024 /* my_copy: Don't overwrite file */
#define MY_THREADSAFE 2048 /* my_seek(): lock fd mutex */
+#define MY_SYNC 4096 /* my_copy(): sync dst file */
#define MY_CHECK_ERROR 1 /* Params to my_end; Check open-close */
#define MY_GIVE_INFO 2 /* Give time info about process*/
@@ -171,6 +172,16 @@ extern char *my_strndup(const char *from, size_t length,
#define TRASH(A,B) /* nothing */
#endif
+#if defined(ENABLED_DEBUG_SYNC)
+extern void (*debug_sync_C_callback_ptr)(const char *, size_t);
+#define DEBUG_SYNC_C(_sync_point_name_) do { \
+ if (debug_sync_C_callback_ptr != NULL) \
+ (*debug_sync_C_callback_ptr)(STRING_WITH_LEN(_sync_point_name_)); } \
+ while(0)
+#else
+#define DEBUG_SYNC_C(_sync_point_name_)
+#endif /* defined(ENABLED_DEBUG_SYNC) */
+
#ifdef HAVE_LARGE_PAGES
extern uint my_get_large_page_size(void);
extern uchar * my_large_malloc(size_t size, myf my_flags);
@@ -709,7 +720,6 @@ extern int wild_compare(const char *str,const char *wildstr,
extern WF_PACK *wf_comp(char * str);
extern int wf_test(struct wild_file_pack *wf_pack,const char *name);
extern void wf_end(struct wild_file_pack *buffer);
-extern size_t strip_sp(char * str);
extern my_bool array_append_string_unique(const char *str,
const char **array, size_t size);
extern void get_date(char * to,int timeflag,time_t use_time);