mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#12537160 ASSERTION FAILED: STOP0 <= &TO->BUF[TO->LEN] WITH LARGE NUMBER.
Turns out the DBUG_ASSERT added by fix for Bug#11792200 was overly pessimistic: 'stop0' is used in the main loop of do_div_mod, but we only dereference 'buf0' for div operations, not for mod. mysql-test/r/func_math.result: New test case. mysql-test/t/func_math.test: New test case. strings/decimal.c: Move DBUG_ASSERT down to where we actually dereference the loop pointer.
This commit is contained in:
@ -2182,7 +2182,6 @@ static int do_div_mod(const decimal_t *from1, const decimal_t *from2,
|
||||
}
|
||||
buf0=to->buf;
|
||||
stop0=buf0+intg0+frac0;
|
||||
DBUG_ASSERT(stop0 <= &to->buf[to->len]);
|
||||
if (likely(div_mod))
|
||||
while (dintg++ < 0 && buf0 < &to->buf[to->len])
|
||||
{
|
||||
@ -2277,7 +2276,10 @@ static int do_div_mod(const decimal_t *from1, const decimal_t *from2,
|
||||
}
|
||||
}
|
||||
if (likely(div_mod))
|
||||
{
|
||||
DBUG_ASSERT(buf0 < to->buf + to->len);
|
||||
*buf0=(dec1)guess;
|
||||
}
|
||||
dcarry= *start1;
|
||||
start1++;
|
||||
}
|
||||
|
Reference in New Issue
Block a user