diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c
index 3aab904a6e0..c4c48f9c121 100644
--- a/mysys/mf_iocache.c
+++ b/mysys/mf_iocache.c
@@ -228,18 +228,20 @@ int init_io_cache(IO_CACHE *info, File file, uint cachesize,
     for (;;)
     {
       uint buffer_block;
+      /*
+        Unset MY_WAIT_IF_FULL bit if it is set, to prevent conflict with
+        MY_ZEROFILL.
+      */
+      myf flags= (myf) (cache_myflags & ~(MY_WME | MY_WAIT_IF_FULL));
+
       if (cachesize < min_cache)
 	cachesize = min_cache;
       buffer_block = cachesize;
       if (type == SEQ_READ_APPEND)
 	buffer_block *= 2;
-      /*
-        Unset MY_WAIT_IF_FULL bit if it is set, to prevent conflict with
-        MY_ZEROFILL.
-      */
-      myf flag = MYF((cache_myflags & ~ (MY_WME | MY_WAIT_IF_FULL)) |
-                (cachesize == min_cache ? MY_WME : 0));
-      if ((info->buffer= (byte*) my_malloc(buffer_block, flag)) != 0)
+      if (cachesize == min_cache)
+        flags|= (myf) MY_WME;
+      if ((info->buffer= (byte*) my_malloc(buffer_block, flags)) != 0)
       {
 	info->write_buffer=info->buffer;
 	if (type == SEQ_READ_APPEND)