Index: src/editpwin.c
--- src/editpwin.c.orig
+++ src/editpwin.c
@@ -776,15 +776,19 @@ void create_ss_frame(int gno, int setno)
  */
 void do_ext_editor(int gno, int setno)
 {
-    char *fname, ebuf[256];
+    char fname[GR_MAXPATHLEN], ebuf[256];
     FILE *cp;
-    int save_autos;
+    int save_autos, fd;
 
-    fname = tmpnam(NULL);
-    cp = grace_openw(fname);
-    if (cp == NULL) {
+    strlcpy(fname, P_tmpdir, sizeof fname);
+    strlcat(fname, "grace-XXXXXXXXXX", sizeof fname);
+    fd = mkstemp(fname);
+    if (fd == -1) {
+        errmsg("Could not create tmp file.");
         return;
-    }
+    } else
+        close(fd);
+    cp = filter_write(fname);
 
     write_set(gno, setno, cp, sformat, FALSE);
     grace_close(cp);
