Index: /trunk/ippTools/src/dettoolConfig.c
===================================================================
--- /trunk/ippTools/src/dettoolConfig.c	(revision 13575)
+++ /trunk/ippTools/src/dettoolConfig.c	(revision 13576)
@@ -46,7 +46,4 @@
     psString now = psTimeToISO(time);
     psFree(time);
-
-    psMetadata *argSets = psMetadataAlloc();
-    psMetadata *modes = psMetadataAlloc();
 
     // -pending
@@ -784,5 +781,7 @@
     psFree(now);
 
-    // find which mode we're running under
+    psMetadata *argSets = psMetadataAlloc();
+    psMetadata *modes = psMetadataAlloc();
+
     PXTOOL_ADD_MODE("-pending",         "list active detruns", DETTOOL_MODE_PENDING,       pendingArgs);
     PXTOOL_ADD_MODE("-definebytag",     "", DETTOOL_MODE_DEFINEBYTAG,   definebytagArgs);
@@ -825,5 +824,4 @@
     PXTOOL_ADD_MODE("-register_detrend_imfile", "", DETTOOL_MODE_REGISTER_DETREND_IMFILE, register_detrend_imfileArgs);
 
-
     if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
         psError(PS_ERR_UNKNOWN, true, "option parsing failed");
@@ -833,4 +831,7 @@
         return NULL;
     }
+
+    psFree(argSets);
+    psFree(modes);
 
     // setup search criterion
Index: /trunk/ippTools/src/pxconfig.c
===================================================================
--- /trunk/ippTools/src/pxconfig.c	(revision 13575)
+++ /trunk/ippTools/src/pxconfig.c	(revision 13576)
@@ -89,4 +89,5 @@
                 fprintf(stream, "only one mode selection is allowed\n");
                 pxUsage(stream, argc, argv, modes);
+                psFree(iter);
                 return NULL;
             }
@@ -101,4 +102,5 @@
                 psError(PS_ERR_UNKNOWN, true, "can not find arguments for mode");
                 fprintf(stderr, "can not find arugments for mode");
+                psFree(iter);
                 return NULL;
             }
@@ -151,4 +153,5 @@
                 psError(PS_ERR_UNKNOWN, false, "boolean type can not be required");
                 fprintf(stderr, "boolean type can not be required\n");
+                psFree(iter);
                 return NULL;
                 break;
@@ -184,4 +187,5 @@
                 psError(PS_ERR_UNKNOWN, false, "unknown argument type");
                 fprintf(stream, "unknown argument type\n");
+                psFree(iter);
                 return NULL;
             ARG_REQUIRED:                
@@ -189,4 +193,5 @@
                 fprintf(stream, "argument %s is required\n", item->name);
                 pxUsageMode(stream, argc, argv, config->modeName, config->args);
+                psFree(iter);
                 return NULL;
         }
