mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Bug #52165: Assertion failed: file .\dtoa.c, line 465
The failing assertion was written with the assumption that a NULL string can never be passed to my_strtod(). However, an empty string may be passed under some circumstances by passing str == NULL and *end == NULL. Fixed the assertion to take the above case into account. mysql-test/r/func_misc.result: Added a test case for bug #52165. mysql-test/t/func_misc.test: Added a test case for bug #52165. strings/dtoa.c: Fixed the assertion in my_strtod() to take the case of 'str == NULL && *end == NULL' into account.
This commit is contained in:
@ -336,4 +336,13 @@ End of 5.0 tests
|
||||
select connection_id() > 0;
|
||||
connection_id() > 0
|
||||
1
|
||||
#
|
||||
# Bug #52165: Assertion failed: file .\dtoa.c, line 465
|
||||
#
|
||||
CREATE TABLE t1 (a SET('a'), b INT);
|
||||
INSERT INTO t1 VALUES ('', 0);
|
||||
SELECT COALESCE(a) = COALESCE(b) FROM t1;
|
||||
COALESCE(a) = COALESCE(b)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
End of tests
|
||||
|
@ -467,4 +467,15 @@ select NAME_CONST('_id',1234) as id;
|
||||
|
||||
select connection_id() > 0;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #52165: Assertion failed: file .\dtoa.c, line 465
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a SET('a'), b INT);
|
||||
INSERT INTO t1 VALUES ('', 0);
|
||||
|
||||
SELECT COALESCE(a) = COALESCE(b) FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of tests
|
||||
|
@ -462,7 +462,9 @@ double my_strtod(const char *str, char **end, int *error)
|
||||
{
|
||||
char buf[DTOA_BUFF_SIZE];
|
||||
double res;
|
||||
DBUG_ASSERT(str != NULL && end != NULL && *end != NULL && error != NULL);
|
||||
DBUG_ASSERT(end != NULL && ((str != NULL && *end != NULL) ||
|
||||
(str == NULL && *end == NULL)) &&
|
||||
error != NULL);
|
||||
|
||||
res= my_strtod_int(str, end, error, buf, sizeof(buf));
|
||||
return (*error == 0) ? res : (res < 0 ? -DBL_MAX : DBL_MAX);
|
||||
|
Reference in New Issue
Block a user