#At file:///home/kgeorge/mysql/bzr/32124-6.0-bugteam/
2892 Georgi Kodinov 2008-10-27
Bug #32124: Addendum to the 6.0 fix
There was a "shortcut" in the 6.0 code that relies on having Item::str_value
filled in after executing Item_func_get_system_var::val_str().
Fixed by calling ::val_str() and working with the results.
modified:
sql/set_var.cc
per-file messages:
sql/set_var.cc
use the external API (::val_str()) instead of relying on
side effects.
=== modified file 'sql/set_var.cc'
--- a/sql/set_var.cc 2008-10-08 15:37:32 +0000
+++ b/sql/set_var.cc 2008-10-27 14:47:19 +0000
@@ -2833,15 +2833,26 @@ err:
static bool sys_update_backupdir(THD *thd, set_var * var)
{
char buff[FN_REFLEN];
- char *res= 0, *old_value=(char *)(var ? var->value->str_value.ptr() : 0);
+ char *res= 0, *old_value= NULL;
bool result= 0;
- uint str_length= (var ? var->value->str_value.length() : 0);
+ uint str_length;
+ String str(buff,sizeof(buff), system_charset_info);
- if (!old_value)
+ if (var)
+ {
+ String *strres;
+
+ if (!(strres= var->value->val_str(&str)))
+ goto err;
+ old_value= strres->c_ptr();
+ str_length= strres->length();
+ }
+ else
{
old_value= make_default_backupdir(buff);
str_length= strlen(old_value);
}
+
if (!(res= my_strndup(old_value, str_length, MYF(MY_FAE+MY_WME))))
{
result= 1;