summaryrefslogtreecommitdiff
path: root/myisam
diff options
context:
space:
mode:
authorunknown <monty@narttu.mysql.fi>2003-08-28 12:27:35 +0300
committerunknown <monty@narttu.mysql.fi>2003-08-28 12:27:35 +0300
commit5df8c7b0e2e7aaf81497c0c87c4bd5c8ba88b2c4 (patch)
treeb30bb17026e048672ab617e2aea229113b1416bd /myisam
parent67f4bfd132d6143260cef4e438deaa807c7a6064 (diff)
downloadmariadb-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.c2
-rw-r--r--myisam/mi_open.c2
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;