--- parse.c
+++ parse.c
@@ -155,7 +155,7 @@
     XrmValue value;
     char *str_type [10];
     char *displayname;
-    char buf [64];
+    char buf [MAXPATHLEN];
 
     char *cmd_name = strrchr ( *argv, '/' );
     if ( cmd_name == 0 )
@@ -174,7 +174,10 @@
      * En fait, c'est a cause de la fonction XMerge... qui est destructrice
      * Malheureusement il faut passer par un fichier intermediaire.
      */
-    (void) sprintf (buf, "/tmp/xcoral_db%ld", (long)getuid());
+    (void)snprintf( buf, MAXPATHLEN, "/%s/xcoral_db%ld"
+                  , (getenv("TMPDIR") ? (char*)getenv("TMPDIR") : "/tmp")
+                  , (long)getuid()
+                  );
     XrmPutFileDatabase ( commandlineDB, buf );
     if ( (savecommandlineDB = XrmGetFileDatabase (  buf )) != 0 ) 
       (void) unlink ( buf ) ;