diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 80b9d6e20bfbe9cbffa6468fed68c69c2fa02220..b6b9a316cc63027fab9422bffbfa706beb37c61e 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -854,21 +854,13 @@ static File create_file(THD *thd, char *path, sql_exchange *exchange,
 {
   File file;
   uint option= MY_UNPACK_FILENAME;
-  char buff[FN_REFLEN];
 
 #ifdef DONT_ALLOW_FULL_LOAD_DATA_PATHS
   option|= MY_REPLACE_DIR;			// Force use of db directory
 #endif
 
-  char *cnt= strmake(buff, mysql_real_data_home, FN_REFLEN);
-  *cnt= FN_LIBCHAR;
-  cnt++;
-  cnt= strmake(cnt, thd->db ? thd->db : "", FN_REFLEN - (cnt-buff));
-  *cnt= FN_LIBCHAR;
-  cnt++;
-  *cnt= 0;
-
-  (void) fn_format(path, exchange->file_name, buff, "", option);
+  strxnmov(path, FN_REFLEN, mysql_real_data_home, thd->db ? thd->db : "");
+  (void) fn_format(path, exchange->file_name, path, "", option);
   if (!access(path, F_OK))
   {
     my_error(ER_FILE_EXISTS_ERROR, MYF(0), exchange->file_name);