@@ -501,7 +501,10 @@ public:
501
501
String str2(buff2, sizeof(buff2), charset), *res;
502
502
503
503
if (!(res=var->value->val_str(&str)))
504
+ {
504
505
var->save_result.string_value.str= 0;
506
+ var->save_result.string_value.length= 0; // safety
507
+ }
505
508
else
506
509
{
507
510
uint32 unused;
@@ -895,9 +898,16 @@ public:
895
898
String str(buff, sizeof(buff), system_charset_info), *res;
896
899
897
900
if (!(res=var->value->val_str(&str)))
901
+ {
898
902
var->save_result.string_value.str= const_cast<char*>("");
903
+ var->save_result.string_value.length= 0;
904
+ }
899
905
else
900
- var->save_result.string_value.str= thd->strmake(res->ptr(), res->length());
906
+ {
907
+ size_t len= res->length();
908
+ var->save_result.string_value.str= thd->strmake(res->ptr(), len);
909
+ var->save_result.string_value.length= len;
910
+ }
901
911
return false;
902
912
}
903
913
bool session_update(THD *thd, set_var *var)
@@ -921,6 +931,7 @@ public:
921
931
{
922
932
char *ptr= (char*)(intptr)option.def_value;
923
933
var->save_result.string_value.str= ptr;
934
+ var->save_result.string_value.length= safe_strlen(ptr);
924
935
}
925
936
uchar *session_value_ptr(THD *thd, const LEX_CSTRING *base)
926
937
{
0 commit comments