mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Merge 10.3 into 10.4
This commit is contained in:
@ -237,9 +237,9 @@ bool String::copy(const String &str)
|
||||
|
||||
bool String::copy(const char *str,size_t arg_length, CHARSET_INFO *cs)
|
||||
{
|
||||
DBUG_ASSERT(arg_length < UINT_MAX32);
|
||||
if (alloc(arg_length))
|
||||
return TRUE;
|
||||
DBUG_ASSERT(arg_length < UINT_MAX32);
|
||||
if (Ptr == str && arg_length == uint32(str_length))
|
||||
{
|
||||
/*
|
||||
@ -256,6 +256,24 @@ bool String::copy(const char *str,size_t arg_length, CHARSET_INFO *cs)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
Copy string, where strings may overlap.
|
||||
Same as String::copy, but use memmove instead of memcpy to avoid warnings
|
||||
from valgrind
|
||||
*/
|
||||
|
||||
bool String::copy_or_move(const char *str,size_t arg_length, CHARSET_INFO *cs)
|
||||
{
|
||||
DBUG_ASSERT(arg_length < UINT_MAX32);
|
||||
if (alloc(arg_length))
|
||||
return TRUE;
|
||||
if ((str_length=uint32(arg_length)))
|
||||
memmove(Ptr,str,arg_length);
|
||||
Ptr[arg_length]=0;
|
||||
str_charset=cs;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Checks that the source string can be just copied to the destination string
|
||||
@ -389,8 +407,9 @@ bool String::set_or_copy_aligned(const char *str, size_t arg_length,
|
||||
/* How many bytes are in incomplete character */
|
||||
size_t offset= (arg_length % cs->mbminlen);
|
||||
|
||||
if (!offset) /* All characters are complete, just copy */
|
||||
if (!offset)
|
||||
{
|
||||
/* All characters are complete, just use given string */
|
||||
set(str, arg_length, cs);
|
||||
return FALSE;
|
||||
}
|
||||
|
Reference in New Issue
Block a user