diff options
author | Varun Gupta <varun.gupta@mariadb.com> | 2019-06-20 12:03:32 +0530 |
---|---|---|
committer | Varun Gupta <varun.gupta@mariadb.com> | 2019-06-20 12:03:32 +0530 |
commit | 8b576616b442d061356bc5a2abd410f478e98ee7 (patch) | |
tree | 29cf92e96213c4f3a7f00294e0c8839b6f277ae4 /sql/sql_string.cc | |
parent | cfbd714868d6af284f1acfff361c098cbc525fff (diff) | |
download | mariadb-git-8b576616b442d061356bc5a2abd410f478e98ee7.tar.gz |
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).
Diffstat (limited to 'sql/sql_string.cc')
-rw-r--r-- | sql/sql_string.cc | 6 |
1 files changed, 5 insertions, 1 deletions
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<size_t>(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); |