diff --git a/glnx-fdio.c b/glnx-fdio.c
index 7dfa5096d6da4e16cea78321bae96b9169c6e58f..892be2a7d84856994490c8ada334c99c095a53b9 100644
--- a/glnx-fdio.c
+++ b/glnx-fdio.c
@@ -141,14 +141,14 @@ glnx_renameat2_exchange (int olddirfd, const char *oldpath,
 #endif
 
   /* Fallback */
-  { const char *old_tmp_name = glnx_strjoina (oldpath, ".XXXXXX");
-
+  { char *old_tmp_name_buf = glnx_strjoina (oldpath, ".XXXXXX");
     /* This obviously isn't race-free, but doing better gets tricky, since if
      * we're here the kernel isn't likely to support RENAME_NOREPLACE either.
      * Anyways, upgrade the kernel. Failing that, avoid use of this function in
      * shared subdirectories like /tmp.
      */
-    glnx_gen_temp_name (old_tmp_name);
+    glnx_gen_temp_name (old_tmp_name_buf);
+    const char *old_tmp_name = old_tmp_name_buf;
 
     /* Move old out of the way */
     if (renameat (olddirfd, oldpath, olddirfd, old_tmp_name) < 0)