summaryrefslogtreecommitdiff
path: root/myisam
diff options
context:
space:
mode:
authorunknown <svoj@mysql.com/april.(none)>2006-10-19 18:04:34 +0500
committerunknown <svoj@mysql.com/april.(none)>2006-10-19 18:04:34 +0500
commitea7094664fa1f1a1cbb1d6bf1a773f7cb19ab154 (patch)
treef3716c032dfb8e76317d832fc1bddfd2684ce483 /myisam
parent3c5d8b40f14a5f32c90da42f2902041fbd6d0fa5 (diff)
parent05e9ed2a26936cbcdbb4807fea5ec1f3fa88b781 (diff)
downloadmariadb-git-ea7094664fa1f1a1cbb1d6bf1a773f7cb19ab154.tar.gz
Merge mysql.com:/home/svoj/devel/mysql/engines/mysql-4.1-engines
into mysql.com:/home/svoj/devel/mysql/engines/mysql-5.0-engines myisam/sort.c: Auto merged mysql-test/r/repair.result: Auto merged mysql-test/t/repair.test: Auto merged sql/sql_base.cc: Use local.
Diffstat (limited to 'myisam')
-rw-r--r--myisam/sort.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/myisam/sort.c b/myisam/sort.c
index 8ee9cd9c31b..f3a5fe59e13 100644
--- a/myisam/sort.c
+++ b/myisam/sort.c
@@ -148,7 +148,8 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages,
skr=maxbuffer;
if (memavl < sizeof(BUFFPEK)*(uint) maxbuffer ||
(keys=(memavl-sizeof(BUFFPEK)*(uint) maxbuffer)/
- (sort_length+sizeof(char*))) <= 1)
+ (sort_length+sizeof(char*))) <= 1 ||
+ keys < (uint) maxbuffer)
{
mi_check_print_error(info->sort_info->param,
"sort_buffer_size is to small");
@@ -363,7 +364,8 @@ pthread_handler_t thr_find_all_keys(void *arg)
skr=maxbuffer;
if (memavl < sizeof(BUFFPEK)*maxbuffer ||
(keys=(memavl-sizeof(BUFFPEK)*maxbuffer)/
- (sort_length+sizeof(char*))) <= 1)
+ (sort_length+sizeof(char*))) <= 1 ||
+ keys < (uint) maxbuffer)
{
mi_check_print_error(sort_param->sort_info->param,
"sort_buffer_size is to small");
@@ -500,6 +502,8 @@ int thr_write_keys(MI_SORT_PARAM *sort_param)
if (!sinfo->sort_keys)
{
got_error=1;
+ my_free(mi_get_rec_buff_ptr(info, sinfo->rec_buff),
+ MYF(MY_ALLOW_ZERO_PTR));
continue;
}
if (!got_error)