From cb02b8aea606ba7a9780c748b957a99451966713 Mon Sep 17 00:00:00 2001 From: yuxianjiang Date: Mon, 31 Jan 2022 23:59:28 +0800 Subject: [PATCH] [bugfix] Assertion failed when Defining a Sys_var_mybool with NO_ARG Problem ======= Code below will cause crash my_bool test_mybool_NO_ARG=FALSE; static Sys_var_mybool Sys_test_mybool_NO_ARG( "test_mybool_NO_ARG", "Test for mybool .", SESSION_VAR(test_mybool_NO_ARG), CMD_LINE(NO_ARG), DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(NULL)); Solution ======== Add assertion of NO_ARG. --- sql/sys_vars.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sql/sys_vars.h b/sql/sys_vars.h index 87bb8c3..e7628fb 100644 --- a/sql/sys_vars.h +++ b/sql/sys_vars.h @@ -426,7 +426,8 @@ public: option.var_type= GET_BOOL; global_var(my_bool)= def_val; assert(def_val < 2); - assert(getopt.arg_type == OPT_ARG || getopt.id == -1); + assert((getopt.arg_type == OPT_ARG || getopt.arg_type == NO_ARG) + || getopt.id == -1); assert(size == sizeof(my_bool)); } bool session_update(THD *thd, set_var *var) @@ -533,7 +534,8 @@ public: global_var(ulong)= aliases[def_val].number; - assert(getopt.arg_type == OPT_ARG || getopt.id == -1); + assert((getopt.arg_type == OPT_ARG || getopt.arg_type == NO_ARG) + || getopt.id == -1); assert(size == sizeof(ulong)); } -- 1.8.3.1