Index: trunk/psModules/src/config/pmConfig.c
===================================================================
--- trunk/psModules/src/config/pmConfig.c	(revision 16413)
+++ trunk/psModules/src/config/pmConfig.c	(revision 16414)
@@ -1227,5 +1227,5 @@
     PS_ASSERT_PTR_NON_NULL(argv, NULL);
 
-    int Narg;
+    int Narg;                           // Argument number
 
     // we load all input files onto a psArray, to be parsed later
@@ -1264,32 +1264,39 @@
 
     // load the list from the supplied text file
-    if (list && strlen(list) > 0 && (Narg = psArgumentGet (*argc, argv, list))) {
-        int nItems;
-        char line[1024]; // XXX limits the list lines to 1024 chars
-        char word[1024];
-        char *filename;
-
+    if (list && strlen(list) > 0 && (Narg = psArgumentGet(*argc, argv, list))) {
         psArgumentRemove (Narg, argc, argv);
         FILE *f = fopen (argv[Narg], "r");
-        if (f == NULL) {
-            psAbort("unable to open specified list file");
-        }
-        while (fgets (line, 1024, f) != NULL) {
-            nItems = sscanf (line, "%s", word);
+        if (!f) {
+            psError(PS_ERR_IO, true, "Unable to open specified list file");
+            psFree(input);
+            return NULL;
+        }
+
+        // XXX Reading the list should be reimplemented using psSlurp
+
+        char line[1024]; // XXX limits the list lines to 1024 chars
+        while (fgets(line, 1024, f) != NULL) {
+            char word[1024];
+            int nItems = sscanf(line, "%s", word);
             switch (nItems) {
-            case 0:
+              case 0:
                 break;
-            case 1:
-                filename = psStringCopy (word);
-                psArrayAdd (input, 16, filename);
-                psFree (filename);
-                break;
-            default:
+              case 1: {
+                  psString filename = psStringCopy(word);
+                  psArrayAdd(input, 16, filename);
+                  psFree(filename);
+                  fclose(f);
+                  break;
+              }
+              default:
                 // rigid format, no comments allowed?
-                psAbort("error parsing input list file");
-                break;
-            }
-        }
-        psArgumentRemove (Narg, argc, argv);
+                psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Unable to parse file list: spaces detected.");
+                psFree(input);
+                fclose(f);
+                return NULL;
+            }
+        }
+        psArgumentRemove(Narg, argc, argv);
+        fclose(f);
     }
 
