From 8b576616b442d061356bc5a2abd410f478e98ee7 Mon Sep 17 00:00:00 2001 From: Varun Gupta Date: Thu, 20 Jun 2019 12:03:32 +0530 Subject: MDEV-19776: Assertion `to_len >= 8' failed in convert_to_printable with optimizer trace enabled Introduced the convert_to_printable_required_length to return the correct length(taking into consideration of dots in the case of error messages). --- sql/sql_string.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'sql/sql_string.cc') diff --git a/sql/sql_string.cc b/sql/sql_string.cc index 1b567ecb325..a4050c579d0 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -1197,10 +1197,14 @@ uint convert_to_printable(char *to, size_t to_len, return (uint) (t - to); } +size_t convert_to_printable_required_length(uint len) +{ + return static_cast(len) * 4 + 3/*dots*/ + 1/*trailing \0 */; +} bool String::append_semi_hex(const char *s, uint len, CHARSET_INFO *cs) { - size_t dst_len= len * 4 + 1; //extra length for the '\0' character + size_t dst_len= convert_to_printable_required_length(len); if (reserve(dst_len)) return true; uint nbytes= convert_to_printable(Ptr + str_length, dst_len, s, len, cs); -- cgit v1.2.1