diff options
author | unknown <monty@narttu.mysql.fi> | 2003-08-28 12:27:35 +0300 |
---|---|---|
committer | unknown <monty@narttu.mysql.fi> | 2003-08-28 12:27:35 +0300 |
commit | 5df8c7b0e2e7aaf81497c0c87c4bd5c8ba88b2c4 (patch) | |
tree | b30bb17026e048672ab617e2aea229113b1416bd /myisam | |
parent | 67f4bfd132d6143260cef4e438deaa807c7a6064 (diff) | |
download | mariadb-git-5df8c7b0e2e7aaf81497c0c87c4bd5c8ba88b2c4.tar.gz |
ixed overflow bug in MyISAM and ISAM when using packed tables with a lot of fields and blobs
isam/open.c:
Fixed overflow bug when using packed tables and blobs
isam/test_all.res:
updated test results
myisam/mi_dynrec.c:
pack_bits not needed here as we do it on open
myisam/mi_open.c:
Fixed overflow bug when using packed tables and blobs
Diffstat (limited to 'myisam')
-rw-r--r-- | myisam/mi_dynrec.c | 2 | ||||
-rw-r--r-- | myisam/mi_open.c | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/myisam/mi_dynrec.c b/myisam/mi_dynrec.c index 4f321c268f1..c08723d7a2c 100644 --- a/myisam/mi_dynrec.c +++ b/myisam/mi_dynrec.c @@ -62,7 +62,7 @@ int _mi_write_blob_record(MI_INFO *info, const byte *record) extra=ALIGN_SIZE(MI_MAX_DYN_BLOCK_HEADER)+MI_SPLIT_LENGTH+ MI_DYN_DELETE_BLOCK_HEADER+1; - reclength= (info->s->base.pack_reclength+ info->s->base.pack_bits+ + reclength= (info->s->base.pack_reclength+ _my_calc_total_blob_length(info,record)+ extra); if (reclength > MI_DYN_MAX_ROW_LENGTH) { diff --git a/myisam/mi_open.c b/myisam/mi_open.c index 1832d525157..048fdf1ce15 100644 --- a/myisam/mi_open.c +++ b/myisam/mi_open.c @@ -602,6 +602,8 @@ void mi_setup_functions(register MYISAM_SHARE *share) share->compare_unique=_mi_cmp_dynamic_unique; share->calc_checksum= mi_checksum; + /* add bits used to pack data to pack_reclength for faster allocation */ + share->base.pack_reclength+= share->base.pack_bits; if (share->base.blobs) { share->update_record=_mi_update_blob_record; |