From d30dbaa20d6fd5fae7027e8d69d8921037614ae2 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Sat, 7 Dec 2019 18:17:08 +0400 Subject: [PATCH] A cleanup for MDEV-8844: Fixing compilation failure on Windows Fixing lossy type conversions: - from int64 to int - from size_t to uint --- sql/sql_string.cc | 7 ++++--- sql/sql_string.h | 2 +- strings/ctype.c | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sql/sql_string.cc b/sql/sql_string.cc index 024f9330c84..71425e0caf6 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -781,13 +781,14 @@ void Static_binary_string::qs_append(ulonglong i) bool Binary_string::copy_printable_hhhh(CHARSET_INFO *to_cs, CHARSET_INFO *from_cs, const char *from, - uint32 from_length) + size_t from_length) { + DBUG_ASSERT(from_length < UINT_MAX32); uint errors; uint one_escaped_char_length= MY_CS_PRINTABLE_CHAR_LENGTH * to_cs->mbminlen; uint one_char_length= MY_MAX(one_escaped_char_length, to_cs->mbmaxlen); - uint32 bytes_needed= (uint32) from_length * one_char_length; - if (alloc(bytes_needed)) + ulonglong bytes_needed= from_length * one_char_length; + if (bytes_needed >= UINT_MAX32 || alloc((size_t) bytes_needed)) return true; str_length= my_convert_using_func(Ptr, Alloced_length, to_cs, my_wc_to_printable_generic, diff --git a/sql/sql_string.h b/sql/sql_string.h index 36a5a5d5e84..617fcda5fee 100644 --- a/sql/sql_string.h +++ b/sql/sql_string.h @@ -531,7 +531,7 @@ public: */ bool copy_printable_hhhh(CHARSET_INFO *to_cs, CHARSET_INFO *from_cs, - const char *from, uint32 from_length); + const char *from, size_t from_length); bool append_ulonglong(ulonglong val); bool append_longlong(longlong val); diff --git a/strings/ctype.c b/strings/ctype.c index fad100f638a..40736ed4b5a 100644 --- a/strings/ctype.c +++ b/strings/ctype.c @@ -1075,7 +1075,7 @@ my_wc_to_printable_generic(CHARSET_INFO *cs, my_wc_t wc, } str+= cs->mbminlen; } - return str - str0; + return (int) (str - str0); }