summaryrefslogtreecommitdiff
path: root/sql/sql_string.cc
diff options
context:
space:
mode:
authorVarun Gupta <varun.gupta@mariadb.com>2019-06-20 12:03:32 +0530
committerVarun Gupta <varun.gupta@mariadb.com>2019-06-20 12:03:32 +0530
commit8b576616b442d061356bc5a2abd410f478e98ee7 (patch)
tree29cf92e96213c4f3a7f00294e0c8839b6f277ae4 /sql/sql_string.cc
parentcfbd714868d6af284f1acfff361c098cbc525fff (diff)
downloadmariadb-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.cc6
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);