diff --git a/unix/xserver/hw/vnc/XorgGlue.c b/unix/xserver/hw/vnc/XorgGlue.c
index baeac29..3a2fce9 100644
--- a/unix/xserver/hw/vnc/XorgGlue.c
+++ b/unix/xserver/hw/vnc/XorgGlue.c
@@ -22,6 +22,7 @@
 #endif
 
 #include <assert.h>
+#include <string.h>
 
 #include "scrnintstr.h"
 #ifdef RANDR
@@ -226,13 +227,13 @@
 #endif
 }
 
-const char *vncRandRGetOutputName(int scrIdx, int outputIdx)
+char *vncRandRGetOutputName(int scrIdx, int outputIdx)
 {
 #ifdef RANDR
   rrScrPrivPtr rp = rrGetScrPriv(screenInfo.screens[scrIdx]);
-  return rp->outputs[outputIdx]->name;
+  return strdup(rp->outputs[outputIdx]->name);
 #else
-  return "";
+  return strdup("");
 #endif
 }
 
diff --git a/unix/xserver/hw/vnc/XorgGlue.h b/unix/xserver/hw/vnc/XorgGlue.h
index dc78f5e..9bdb25e 100644
--- a/unix/xserver/hw/vnc/XorgGlue.h
+++ b/unix/xserver/hw/vnc/XorgGlue.h
@@ -56,7 +56,7 @@
 int vncRandRGetOutputCount(int scrIdx);
 int vncRandRGetAvailableOutputs(int scrIdx);
 
-const char *vncRandRGetOutputName(int scrIdx, int outputIdx);
+char *vncRandRGetOutputName(int scrIdx, int outputIdx);
 
 int vncRandRIsOutputEnabled(int scrIdx, int outputIdx);
 int vncRandRIsOutputUsable(int scrIdx, int outputIdx);
diff --git a/unix/xserver/hw/vnc/XserverDesktop.cc b/unix/xserver/hw/vnc/XserverDesktop.cc
index c47f507..c9b7038 100644
--- a/unix/xserver/hw/vnc/XserverDesktop.cc
+++ b/unix/xserver/hw/vnc/XserverDesktop.cc
@@ -675,8 +675,10 @@
       /* Disable and move on... */
       ret = vncRandRDisableOutput(screenIndex, i);
       if (!ret) {
+        char *name = vncRandRGetOutputName(screenIndex, i);
         vlog.error("Failed to disable unused output '%s'",
-                   vncRandRGetOutputName(screenIndex, i));
+                   name);
+        free(name);
         return rfb::resultInvalid;
       }
       outputIdMap.erase(output);
@@ -690,10 +692,12 @@
                                     iter->dimensions.width(),
                                     iter->dimensions.height());
     if (!ret) {
+      char *name = vncRandRGetOutputName(screenIndex, i);
       vlog.error("Failed to reconfigure output '%s' to %dx%d+%d+%d",
-                 vncRandRGetOutputName(screenIndex, i),
+                 name,
                  iter->dimensions.width(), iter->dimensions.height(),
                  iter->dimensions.tl.x, iter->dimensions.tl.y);
+      free(name);
       return rfb::resultInvalid;
     }
   }
@@ -747,10 +751,12 @@
                                     iter->dimensions.width(),
                                     iter->dimensions.height());
     if (!ret) {
+      char *name = vncRandRGetOutputName(screenIndex, i);
       vlog.error("Failed to reconfigure output '%s' to %dx%d+%d+%d",
-                 vncRandRGetOutputName(screenIndex, i),
+                 name,
                  iter->dimensions.width(), iter->dimensions.height(),
                  iter->dimensions.tl.x, iter->dimensions.tl.y);
+      free(name);
       return rfb::resultInvalid;
     }
   }
