summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorunknown <guilhem@gbichot4.local>2008-02-18 23:29:39 +0100
committerunknown <guilhem@gbichot4.local>2008-02-18 23:29:39 +0100
commit85213f6235aa344f7861cc2f9a151869e041cb9e (patch)
tree7bffd7a5bcb1eea8fb0183e3a4e3a40cf6a783a6 /include
parentdf2cf8c78dc022472dd22584a140f579ad8cfe03 (diff)
downloadmariadb-git-85213f6235aa344f7861cc2f9a151869e041cb9e.tar.gz
Fix for server bug experienced in Maria (wrong "Truncated incorrect <var_name>
value" error even though the value was correct): a C function in my_getopt.c was taking bool* in parameter and was called from C++ sql_plugin.cc, but on some Mac OS X sizeof(bool) is 1 in C and 4 in C++, giving funny mismatches. Fixed, all other occurences of bool in C are removed, future ones are blocked by a "C-bool-catcher" in my_global.h (use my_bool). client/mysqldump.c: my_bool for C client/mysqltest.c: my_bool for C extra/replace.c: my_bool for C include/my_getopt.h: my_bool for C include/my_global.h: Prevent people from using bool in C, it causes real bugs. include/my_sys.h: my_bool for C include/my_time.h: my_bool for C include/thr_lock.h: my_bool for C libmysql/libmysql.c: my_bool for C mysys/charset.c: my_bool for C mysys/my_getopt.c: my_bool for C mysys/queues.c: my_bool for C mysys/thr_lock.c: my_bool for C regex/reginit.c: my_bool for C sql/set_var.cc: C functions use my_bool so we must use my_bool too. sql/sql_plugin.cc: C functions use my_bool so we must use my_bool too. This fixes a real observed bug of Maria, because on some Mac OS X, sizeof(bool) is 1 in C and 4 in C++, so the bool* does wrong. Removing useless line. storage/heap/hp_update.c: my_bool for C storage/myisam/mi_check.c: my_bool for C storage/myisam/mi_dynrec.c: my_bool for C storage/myisam/mi_search.c: my_bool for C storage/myisam/mi_update.c: my_bool for C storage/myisam/mi_write.c: my_bool for C storage/myisam/myisamdef.h: my_bool for C storage/myisam/myisamlog.c: my_bool for C storage/myisam/myisampack.c: my_bool for C tests/mysql_client_test.c: my_bool for C unittest/mysys/bitmap-t.c: my_bool for C vio/viosslfactories.c: my_bool for C
Diffstat (limited to 'include')
-rw-r--r--include/my_getopt.h5
-rw-r--r--include/my_global.h4
-rw-r--r--include/my_sys.h12
-rw-r--r--include/my_time.h2
-rw-r--r--include/thr_lock.h2
5 files changed, 15 insertions, 10 deletions
diff --git a/include/my_getopt.h b/include/my_getopt.h
index 14f8e6df95b..50ebe9190d8 100644
--- a/include/my_getopt.h
+++ b/include/my_getopt.h
@@ -75,8 +75,9 @@ extern void my_getopt_register_get_addr(uchar ** (*func_addr)(const char *, uint
const struct my_option *));
ulonglong getopt_ull_limit_value(ulonglong num, const struct my_option *optp,
- bool *fix);
-longlong getopt_ll_limit_value(longlong, const struct my_option *,bool *fix);
+ my_bool *fix);
+longlong getopt_ll_limit_value(longlong, const struct my_option *,
+ my_bool *fix);
my_bool getopt_compare_strings(const char *s, const char *t, uint length);
C_MODE_END
diff --git a/include/my_global.h b/include/my_global.h
index 4b0786aa826..ab960a9e6cd 100644
--- a/include/my_global.h
+++ b/include/my_global.h
@@ -1508,4 +1508,8 @@ inline void operator delete[](void*, void*) { /* Do nothing */ }
#define min(a, b) ((a) < (b) ? (a) : (b))
#endif
+#if !defined(__cplusplus) && !defined(bool)
+#define bool In_C_you_should_use_my_bool_instead()
+#endif
+
#endif /* my_global_h */
diff --git a/include/my_sys.h b/include/my_sys.h
index ee79806c40e..57711b7ae82 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -919,12 +919,12 @@ extern CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags);
extern CHARSET_INFO *get_charset_by_csname(const char *cs_name,
uint cs_flags, myf my_flags);
-extern bool resolve_charset(const char *cs_name,
- CHARSET_INFO *default_cs,
- CHARSET_INFO **cs);
-extern bool resolve_collation(const char *cl_name,
- CHARSET_INFO *default_cl,
- CHARSET_INFO **cl);
+extern my_bool resolve_charset(const char *cs_name,
+ CHARSET_INFO *default_cs,
+ CHARSET_INFO **cs);
+extern my_bool resolve_collation(const char *cl_name,
+ CHARSET_INFO *default_cl,
+ CHARSET_INFO **cl);
extern void free_charsets(void);
extern char *get_charsets_dir(char *buf);
diff --git a/include/my_time.h b/include/my_time.h
index e3bdb58e5c2..af3fc103530 100644
--- a/include/my_time.h
+++ b/include/my_time.h
@@ -111,7 +111,7 @@ void init_time(void);
TRUE The MYSQL_TIME value is definitely out of range
*/
-static inline bool validate_timestamp_range(const MYSQL_TIME *t)
+static inline my_bool validate_timestamp_range(const MYSQL_TIME *t)
{
if ((t->year > TIMESTAMP_MAX_YEAR || t->year < TIMESTAMP_MIN_YEAR) ||
(t->year == TIMESTAMP_MAX_YEAR && (t->month > 1 || t->day > 19)) ||
diff --git a/include/thr_lock.h b/include/thr_lock.h
index 74d65c2fa7a..a4ca6e6ddf2 100644
--- a/include/thr_lock.h
+++ b/include/thr_lock.h
@@ -148,7 +148,7 @@ void thr_unlock(THR_LOCK_DATA *data);
enum enum_thr_lock_result thr_multi_lock(THR_LOCK_DATA **data,
uint count, THR_LOCK_OWNER *owner);
void thr_multi_unlock(THR_LOCK_DATA **data,uint count);
-void thr_abort_locks(THR_LOCK *lock, bool upgrade_lock);
+void thr_abort_locks(THR_LOCK *lock, my_bool upgrade_lock);
my_bool thr_abort_locks_for_thread(THR_LOCK *lock, my_thread_id thread);
void thr_print_locks(void); /* For debugging */
my_bool thr_upgrade_write_delay_lock(THR_LOCK_DATA *data);