diff options
author | unknown <cmiller@zippy.cornsilk.net> | 2008-04-02 10:56:49 -0400 |
---|---|---|
committer | unknown <cmiller@zippy.cornsilk.net> | 2008-04-02 10:56:49 -0400 |
commit | babd981e41fe3a385abf4ee398479124e0776687 (patch) | |
tree | 8c2d7149365c48864aaf2e06f7fee5a182c9a4d6 /sql/field.cc | |
parent | c932049cbd8de6b25020b2956d15c4c664c03dc5 (diff) | |
parent | a9e658408fd40ed9485654539b334b92272361c0 (diff) | |
download | mariadb-git-babd981e41fe3a385abf4ee398479124e0776687.tar.gz |
Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my50-bug15776
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-build
sql/field.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/unireg.h:
Auto merged
mysql-test/r/type_blob.result:
Manual merge.
mysql-test/t/type_blob.test:
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 53eafcaf2cc..bbc2f549ead 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -8441,8 +8441,20 @@ bool create_field::init(THD *thd, char *fld_name, enum_field_types fld_type, (fld_type_modifier & NOT_NULL_FLAG) && fld_type != FIELD_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) { |