summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authorunknown <malff@lambda.hsd1.co.comcast.net.>2007-10-18 16:57:51 -0600
committerunknown <malff@lambda.hsd1.co.comcast.net.>2007-10-18 16:57:51 -0600
commitbf5bcb849f56735ffb5270772106ad252bc05cc6 (patch)
treea15f3629ffe50212edc840fdcf207616f09d249a /mysys
parent84984f9111bf49418782eaa21b2d8cde41998eba (diff)
parent9014e8e951df75086520fe7c47cb26a299f3b23f (diff)
downloadmariadb-git-bf5bcb849f56735ffb5270772106ad252bc05cc6.tar.gz
Merge lambda.hsd1.co.comcast.net.:/home/malff/TREE/mysql-5.1-base
into lambda.hsd1.co.comcast.net.:/home/malff/TREE/mysql-5.1-rt-merge client/mysqlcheck.c: Auto merged client/mysqltest.c: Auto merged libmysql/libmysql.c: Auto merged mysql-test/include/mix1.inc: Auto merged mysql-test/r/innodb_mysql.result: Auto merged mysql-test/r/udf.result: Auto merged mysql-test/t/udf.test: Auto merged sql/item.cc: Auto merged sql/item_func.cc: Auto merged sql/mysql_priv.h: Auto merged sql/set_var.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_select.cc: Auto merged tests/mysql_client_test.c: Auto merged
Diffstat (limited to 'mysys')
-rw-r--r--mysys/my_getopt.c16
-rw-r--r--mysys/my_init.c2
2 files changed, 17 insertions, 1 deletions
diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c
index 3a5b130e067..5b5c0881314 100644
--- a/mysys/my_getopt.c
+++ b/mysys/my_getopt.c
@@ -19,6 +19,7 @@
#include <my_sys.h>
#include <mysys_err.h>
#include <my_getopt.h>
+#include <errno.h>
static void default_reporter(enum loglevel level, const char *format, ...);
my_error_reporter my_getopt_error_reporter= &default_reporter;
@@ -730,7 +731,15 @@ static longlong eval_num_suffix(char *argument, int *error, char *option_name)
longlong num;
*error= 0;
+ errno= 0;
num= strtoll(argument, &endchar, 10);
+ if (errno == ERANGE)
+ {
+ my_getopt_error_reporter(ERROR_LEVEL,
+ "Incorrect integer value: '%s'", argument);
+ *error= 1;
+ return 0;
+ }
if (*endchar == 'k' || *endchar == 'K')
num*= 1024L;
else if (*endchar == 'm' || *endchar == 'M')
@@ -767,7 +776,14 @@ static longlong getopt_ll(char *arg, const struct my_option *optp, int *err)
num= eval_num_suffix(arg, err, (char*) optp->name);
if (num > 0 && (ulonglong) num > (ulonglong) optp->max_value &&
optp->max_value) /* if max value is not set -> no upper limit */
+ {
+ char buf[22];
+ my_getopt_error_reporter(WARNING_LEVEL,
+ "Truncated incorrect %s value: '%s'",
+ optp->name, llstr(num, buf));
+
num= (ulonglong) optp->max_value;
+ }
num= ((num - optp->sub_size) / block_size);
num= (longlong) (num * block_size);
return max(num, optp->min_value);
diff --git a/mysys/my_init.c b/mysys/my_init.c
index b2eefe97ee8..6d1b9ec04be 100644
--- a/mysys/my_init.c
+++ b/mysys/my_init.c
@@ -299,7 +299,7 @@ int handle_rtc_failure(int err_type, const char *file, int line,
return 0; /* Error is handled */
}
-#pragma runtime_checks("", on)
+#pragma runtime_checks("", restore)
#endif