summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorRamil Kalimullin <ramil@mysql.com>2010-11-18 15:01:50 +0300
committerRamil Kalimullin <ramil@mysql.com>2010-11-18 15:01:50 +0300
commit2b2983850f4711effca876baa3f926a7072a4fb8 (patch)
tree04b3b89fdd9cd8129c671253e6d65fe9be72ded2 /sql/field.cc
parentabdaf1f79b07914ba31ef06a51927345526c92e0 (diff)
parent3f391adc78e1dd91bb2c3638175f251f25d1b433 (diff)
downloadmariadb-git-2b2983850f4711effca876baa3f926a7072a4fb8.tar.gz
Manual-merge from 5.5-bugfixing.
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/sql/field.cc b/sql/field.cc
index ce1b1fc6eb0..e5cae9ea8e3 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -6327,10 +6327,13 @@ int Field_str::store(double nr)
ASSERT_COLUMN_MARKED_FOR_WRITE;
char buff[DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE];
uint local_char_length= field_length / charset()->mbmaxlen;
- size_t length;
- my_bool error;
+ size_t length= 0;
+ my_bool error= (local_char_length == 0);
+
+ // my_gcvt() requires width > 0, and we may have a CHAR(0) column.
+ if (!error)
+ length= my_gcvt(nr, MY_GCVT_ARG_DOUBLE, local_char_length, buff, &error);
- length= my_gcvt(nr, MY_GCVT_ARG_DOUBLE, local_char_length, buff, &error);
if (error)
{
if (table->in_use->abort_on_warning)
@@ -8408,6 +8411,8 @@ uchar *Field_enum::pack(uchar *to, const uchar *from,
default:
DBUG_ASSERT(0);
}
+ MY_ASSERT_UNREACHABLE();
+ DBUG_RETURN(NULL);
}
const uchar *Field_enum::unpack(uchar *to, const uchar *from,
@@ -8430,6 +8435,8 @@ const uchar *Field_enum::unpack(uchar *to, const uchar *from,
default:
DBUG_ASSERT(0);
}
+ MY_ASSERT_UNREACHABLE();
+ DBUG_RETURN(NULL);
}