diff options
author | Martin Hansson <mhansson@mysql.com> | 2009-06-16 16:36:15 +0200 |
---|---|---|
committer | Martin Hansson <mhansson@mysql.com> | 2009-06-16 16:36:15 +0200 |
commit | aa8677bc32fd80ee9ab08717369d23a4ef011717 (patch) | |
tree | 4e202e6d5e7d51dc49fb2e560a3ccd568144b324 /sql/sql_string.cc | |
parent | ed7f0f3023041cc1749077ad45cd5a8bb8fa784e (diff) | |
download | mariadb-git-aa8677bc32fd80ee9ab08717369d23a4ef011717.tar.gz |
Bug#45168: assertion with convert() and empty set value
The assertion in String::copy was added in order to avoid
valgrind errors when the destination was the same as the source.
Eased restriction to allow for the case when str == NULL.
mysql-test/r/func_set.result:
Bug#45168: Test result
mysql-test/t/func_set.test:
Bug#45168: Test case
sql/item_strfunc.cc:
Bug#45168: Code cleanup and grammar correction in comment
sql/sql_string.cc:
Bug#45168: Fix
Diffstat (limited to 'sql/sql_string.cc')
-rw-r--r-- | sql/sql_string.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/sql/sql_string.cc b/sql/sql_string.cc index 61731f3b984..7759985ba85 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -322,14 +322,23 @@ bool String::set_or_copy_aligned(const char *str,uint32 arg_length, return copy_aligned(str, arg_length, offset, cs); } - /* Copy with charset conversion */ + +/** + Copies the character data into this String, with optional character set + conversion. + + @return + FALSE ok + TRUE Could not allocate result buffer + +*/ bool String::copy(const char *str, uint32 arg_length, CHARSET_INFO *from_cs, CHARSET_INFO *to_cs, uint *errors) { uint32 offset; - - DBUG_ASSERT(str != Ptr); + + DBUG_ASSERT(!str || str != Ptr); if (!needs_conversion(arg_length, from_cs, to_cs, &offset)) { |