summaryrefslogtreecommitdiff
path: root/mysys/mf_keycache.c
diff options
context:
space:
mode:
Diffstat (limited to 'mysys/mf_keycache.c')
-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;
}