summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authormonty@narttu.mysql.fi <>2003-08-25 17:19:44 +0300
committermonty@narttu.mysql.fi <>2003-08-25 17:19:44 +0300
commit2c1f1206c3062a877e3fe00c4860bd48e55d4fca (patch)
tree28a19e92b8ac6f4ca2691bb1c3ae3056a65b006c /mysys
parentf83e876065e4fe7c8214f418b9febe5be4d00cad (diff)
downloadmariadb-git-2c1f1206c3062a877e3fe00c4860bd48e55d4fca.tar.gz
Better fix for myisamchk --sort-index on windows
Fixed deadlock bug when doing resize of key buffer while key buffer was in active use
Diffstat (limited to 'mysys')
-rw-r--r--mysys/mf_keycache.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/mysys/mf_keycache.c b/mysys/mf_keycache.c
index 6a037f13f05..4cb3681b8b8 100644
--- a/mysys/mf_keycache.c
+++ b/mysys/mf_keycache.c
@@ -705,11 +705,19 @@ int flush_key_blocks(File file, enum flush_type type)
static int flush_all_key_blocks()
{
- int error=0;
- while (_my_blocks_changed > 0)
- if (flush_key_blocks_int(_my_used_first->file, FLUSH_RELEASE))
- error=1;
- return error;
+ SEC_LINK **block, **end;
+ for (block= changed_blocks, end= block+CHANGED_BLOCKS_HASH;
+ block < end;
+ block++
+ )
+ {
+ while (*block)
+ {
+ if (flush_key_blocks_int((*block)->file, FLUSH_RELEASE))
+ return 1;
+ }
+ }
+ return 0;
}