Commit 3e18dfb6 authored by Magne Mahre's avatar Magne Mahre

Fix of incorrect casting for large sizes

parent ab061391
......@@ -311,18 +311,17 @@ typedef struct st_mysql_lex_string LEX_STRING;
static inline const uchar *skip_trailing_space(const uchar *ptr,size_t len)
{
const uchar *start= ptr;
const uchar *end= ptr + len;
if (len > 20)
{
const uchar *end_words= (const uchar *)
(((intptr)end) / SIZEOF_INT * SIZEOF_INT);
const uchar *start_words= (const uchar *)
((((intptr)start) + SIZEOF_INT - 1) / SIZEOF_INT * SIZEOF_INT);
const uchar *end_words= (const uchar *)(intptr)
(((ulonglong)(intptr)end) / SIZEOF_INT * SIZEOF_INT);
const uchar *start_words= (const uchar *)(intptr)
((((ulonglong)(intptr)ptr) + SIZEOF_INT - 1) / SIZEOF_INT * SIZEOF_INT);
DBUG_ASSERT(((intptr)start) >= SIZEOF_INT);
if (end_words > start)
DBUG_ASSERT(((ulonglong)(intptr)ptr) >= SIZEOF_INT);
if (end_words > ptr)
{
while (end > end_words && end[-1] == 0x20)
end--;
......@@ -331,7 +330,7 @@ static inline const uchar *skip_trailing_space(const uchar *ptr,size_t len)
end -= SIZEOF_INT;
}
}
while (end > start && end[-1] == 0x20)
while (end > ptr && end[-1] == 0x20)
end--;
return (end);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment