diff options
author | unknown <cmiller@zippy.cornsilk.net> | 2008-03-31 14:32:56 -0400 |
---|---|---|
committer | unknown <cmiller@zippy.cornsilk.net> | 2008-03-31 14:32:56 -0400 |
commit | c704e8bdd7d583e86efb7bae7f391a798c871ffa (patch) | |
tree | 8312084c71fe1f55eaac7764c3ff21720d9e645c /sql/field.cc | |
parent | a97875e55271324588448139e34e0db928213f15 (diff) | |
parent | 73e1c5ae10994373df5d929974be02edffae70e6 (diff) | |
download | mariadb-git-c704e8bdd7d583e86efb7bae7f391a798c871ffa.tar.gz |
Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my50-bug15776
into zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my51-bug15776
mysql-test/r/type_blob.result:
Auto merged
mysql-test/t/type_blob.test:
Auto merged
sql/field.cc:
Auto merged
sql/unireg.h:
Auto merged
sql/item_create.cc:
Manual merge.
sql/share/errmsg.txt:
Manual merge.
sql/sql_yacc.yy:
Manual merge.
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sql/field.cc b/sql/field.cc index 3213f84ee3e..a7a76d6c950 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -8772,8 +8772,20 @@ bool Create_field::init(THD *thd, char *fld_name, enum_field_types fld_type, (fld_type_modifier & NOT_NULL_FLAG) && fld_type != MYSQL_TYPE_TIMESTAMP) flags|= NO_DEFAULT_VALUE_FLAG; - if (fld_length && !(length= (uint) atoi(fld_length))) - fld_length= 0; /* purecov: inspected */ + if (fld_length != 0) + { + errno= 0; + length= strtoul(fld_length, NULL, 10); + if (errno != 0) + { + my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), fld_name, MAX_FIELD_BLOBLENGTH); + DBUG_RETURN(TRUE); + } + + if (length == 0) + fld_length= 0; /* purecov: inspected */ + } + sign_len= fld_type_modifier & UNSIGNED_FLAG ? 0 : 1; switch (fld_type) { |