diff --git a/src/main.c b/src/main.c
index 03a5444a78db62089f2989fb90db0e008689ea0a..ba5bcf9255bca24178d276b2e4faac77d01ba82d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1473,9 +1473,9 @@ operate(struct Configurable *config, int argc, char *argv[])
 #endif
   }
   for (i = 0; (url = next_url(urls)); ++i) {
-    if (outfiles) {
+    if (config->outfile) {
       free(config->outfile);
-      config->outfile = outfiles;
+      config->outfile = strdup(outfiles);
     }
  
     if (config->outfile || config->remotefile) {
@@ -1757,6 +1757,9 @@ operate(struct Configurable *config, int argc, char *argv[])
       free(url);
 
   }
+  if(outfiles)
+    free(outfiles);
+
 #ifdef MIME_SEPARATORS
   if (separator)
     printf("--%s--\n", MIMEseparator);