summaryrefslogtreecommitdiff
path: root/mysys/my_getopt.c
diff options
context:
space:
mode:
authorKristofer Pettersson <kristofer.pettersson@sun.com>2009-11-09 23:28:31 +0100
committerKristofer Pettersson <kristofer.pettersson@sun.com>2009-11-09 23:28:31 +0100
commitac3a08c3d2517c6af9827554cb98a245ce52bd8c (patch)
tree53e370dc429e4a62565e55cc6dcbaa6832a69881 /mysys/my_getopt.c
parentcafe3c7fcaf32a5141b8bf4fbe4299eedabfb2b0 (diff)
downloadmariadb-git-ac3a08c3d2517c6af9827554cb98a245ce52bd8c.tar.gz
Bug#46043 mysqld --skip-innodb does not skip InnoDB
The prefix --skip- didn't work on 64 bit big endian machines because of how the value pointer was casted. mysys/my_getopt.c: * Use the interface! The value pointer must correspond to the type mask or it will break on big endian platforms.
Diffstat (limited to 'mysys/my_getopt.c')
-rw-r--r--mysys/my_getopt.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c
index 5e81dbf2ee2..e561d74f4d1 100644
--- a/mysys/my_getopt.c
+++ b/mysys/my_getopt.c
@@ -413,17 +413,17 @@ invalid value '%s'",
else if (optp->arg_type == OPT_ARG &&
(((optp->var_type & GET_TYPE_MASK) == GET_BOOL) ||
(optp->var_type & GET_TYPE_MASK) == GET_ENUM))
- {
- if (optend == disabled_my_option)
- *((my_bool*) value)= (my_bool) 0;
- else
- {
- if (!optend) /* No argument -> enable option */
- *((my_bool*) value)= (my_bool) 1;
- else
- argument= optend;
- }
- }
+ {
+ if (optend == disabled_my_option)
+ init_one_value(optp, value, 0);
+ else
+ {
+ if (!optend) /* No argument -> enable option */
+ init_one_value(optp, value, 1);
+ else
+ argument= optend;
+ }
+ }
else if (optp->arg_type == REQUIRED_ARG && !optend)
{
/* Check if there are more arguments after this one */