summaryrefslogtreecommitdiff
path: root/sql/sql_string.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_string.cc')
-rw-r--r--sql/sql_string.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/sql/sql_string.cc b/sql/sql_string.cc
index 20772adcb22..2c5be35e887 100644
--- a/sql/sql_string.cc
+++ b/sql/sql_string.cc
@@ -183,7 +183,16 @@ bool String::copy(const char *str,uint32 arg_length, CHARSET_INFO *cs)
{
if (alloc(arg_length))
return TRUE;
- if ((str_length=arg_length))
+ if (Ptr == str && arg_length == str_length)
+ {
+ /*
+ This can happen in some cases. This code is here mainly to avoid
+ warnings from valgrind, but can also be an indication of error.
+ */
+ DBUG_PRINT("warning", ("Copying string on itself: %p %lu",
+ str, arg_length));
+ }
+ else if ((str_length=arg_length))
memcpy(Ptr,str,arg_length);
Ptr[arg_length]=0;
str_charset=cs;