diff --git a/lib/SimpleSAML/Configuration.php b/lib/SimpleSAML/Configuration.php
index 9536baabe40035442836238a6940b1ff3b4f0515..32a8da71580baa990cd1cbae2343a7b27649df94 100644
--- a/lib/SimpleSAML/Configuration.php
+++ b/lib/SimpleSAML/Configuration.php
@@ -121,8 +121,10 @@ class SimpleSAML_Configuration
             // file does not exist, but is required
             throw new Exception('Missing configuration file: '.$filename);
         } else {
-            // file does not exist, but is optional
-            $config = array();
+            // file does not exist, but is optional, so return an empty configuration object without saving it
+            $cfg = new SimpleSAML_Configuration(array(), $filename);
+            $cfg->filename = $filename;
+            return $cfg;
         }
 
         $cfg = new SimpleSAML_Configuration($config, $filename);