summaryrefslogtreecommitdiff
path: root/mysys/charset.c
diff options
context:
space:
mode:
authorAlexander Nozdrin <alik@sun.com>2009-12-15 23:20:53 +0300
committerAlexander Nozdrin <alik@sun.com>2009-12-15 23:20:53 +0300
commitd12a2c32e9a1aeb962f03368c4915872b3243344 (patch)
tree3ed4942058ddeb70f246fd9caa9ca967dd1e7bc7 /mysys/charset.c
parentf187906c4e2ab8ffa33f1bfa9fb33b06da21c4bd (diff)
downloadmariadb-git-d12a2c32e9a1aeb962f03368c4915872b3243344.tar.gz
Backporting patch for Bug#47756
from mysql-next-mr-bugfixing into mysql-trunk-bugfixing. NOTE: the "utf8_phone_ci" collation does not exist in mysql-trunk yet, so another collation with 2-byte collation ID is used: "utf8_test_ci". This patch will be null-merged to mysql-next-mr-bugfixing. Original revision: ------------------------------------------------------------ revision-id: bar@mysql.com-20091207121153-hs3bqbmr0719ws21 committer: Alexander Barkov <bar@mysql.com> branch nick: mysql-next-mr.b47756 timestamp: Mon 2009-12-07 16:11:53 +0400 message: Bug#47756 Setting 2byte collation ID with 'set names' crashes the server The problem is not actually related to 2byte collation IDs. The same crash happens if you change the collation ID in mysql-test/str_data/Index.xml to a value smaller than 256. Crash happened in SQL parser, because the "ident_map" and "state_map" arrays were not initialized in loadable utf8 collations. Fix: adding proper initialization of the "ident_map" and "state_map" members for loadable utf8 collations. ------------------------------------------------------------
Diffstat (limited to 'mysys/charset.c')
-rw-r--r--mysys/charset.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/mysys/charset.c b/mysys/charset.c
index 280b2ad6091..e216f665092 100644
--- a/mysys/charset.c
+++ b/mysys/charset.c
@@ -255,6 +255,9 @@ static int add_collation(CHARSET_INFO *cs)
{
#if defined (HAVE_CHARSET_utf8) && defined(HAVE_UCA_COLLATIONS)
copy_uca_collation(newcs, &my_charset_utf8_unicode_ci);
+ newcs->ctype= my_charset_utf8_unicode_ci.ctype;
+ if (init_state_maps(newcs))
+ return MY_XML_ERROR;
#endif
}
else