mirror of
https://github.com/MariaDB/server.git
synced 2026-04-22 08:15:31 +02:00
bug#7284: strnxfrm returns different results for equal strings
This commit is contained in:
parent
bcb3783c7c
commit
9842aca3ef
34 changed files with 344 additions and 45 deletions
|
|
@ -7214,8 +7214,7 @@ static int my_strnxfrm_uca(CHARSET_INFO *cs,
|
|||
uchar *dst, uint dstlen,
|
||||
const uchar *src, uint srclen)
|
||||
{
|
||||
uchar *de = dst + dstlen;
|
||||
const uchar *dst_orig = dst;
|
||||
uchar *de = dst + (dstlen & (uint) ~1); // add even length for easier code
|
||||
int s_res;
|
||||
my_uca_scanner scanner;
|
||||
scanner_handler->init(&scanner, cs, src, srclen);
|
||||
|
|
@ -7226,8 +7225,17 @@ static int my_strnxfrm_uca(CHARSET_INFO *cs,
|
|||
dst[1]= s_res & 0xFF;
|
||||
dst+= 2;
|
||||
}
|
||||
for ( ; dst < de; *dst++='\0');
|
||||
return dst - dst_orig;
|
||||
s_res= cs->sort_order_big[0][0x20 * cs->sort_order[0]];
|
||||
while (dst < de)
|
||||
{
|
||||
dst[0]= s_res >> 8;
|
||||
dst[1]= s_res & 0xFF;
|
||||
dst+= 2;
|
||||
}
|
||||
if (dstlen & 1) // if odd number then fill the last char
|
||||
*dst= '\0';
|
||||
|
||||
return dstlen;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue