summaryrefslogtreecommitdiff
path: root/strings/dtoa.c
diff options
context:
space:
mode:
authorAlexey Kopytov <Alexey.Kopytov@Sun.com>2010-04-07 13:59:02 +0400
committerAlexey Kopytov <Alexey.Kopytov@Sun.com>2010-04-07 13:59:02 +0400
commitee13669126e4a2c3ed8b86aa03d723a87d6a2de7 (patch)
treeb27bd8361f4b5418724f82dd5ab573a30e1b540c /strings/dtoa.c
parent6da92d8f1973aed699bc88450211bb30f6ef5750 (diff)
downloadmariadb-git-ee13669126e4a2c3ed8b86aa03d723a87d6a2de7.tar.gz
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.
Diffstat (limited to 'strings/dtoa.c')
-rw-r--r--strings/dtoa.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/strings/dtoa.c b/strings/dtoa.c
index 88e0d9272a8..75a05be2c56 100644
--- a/strings/dtoa.c
+++ b/strings/dtoa.c
@@ -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);