Index: trunk/ippTools/src/regtool.c
===================================================================
--- trunk/ippTools/src/regtool.c	(revision 6978)
+++ trunk/ippTools/src/regtool.c	(revision 7815)
@@ -14,27 +14,35 @@
 static p2PendingExpRow *newToP2PendingExp(newExpRow *newExp);
 
+# define MODECASE(caseName, func) \
+    case caseName: \
+    if (!func(config)) { \
+        goto FAIL; \
+    } \
+    break;
+
 int main(int argc, char **argv)
 {
+    psLibInit(NULL);
+
     pxConfig *config = p0searchConfig(NULL, argc, argv);
 
     switch (config->mode) {
-        case PX_MODE_PENDING:
-            if (!pendingMode(config)) {
-                goto FAIL;
-            }
-            break;
-        case PX_MODE_UPDATE:
-            if (!updateMode(config)) {
-                goto FAIL;
-            }
-            break;
+        MODECASE(P0SEARCH_MODE_PENDING, pendingMode);
+        MODECASE(P0SEARCH_MODE_UPDATE, updateMode);
         default:
             psAbort(argv[0], "invalid option (this should not happen)");
     }
 
+    psFree(config);
+    pmConfigDone();
+    psLibFinalize();
+
     exit(EXIT_SUCCESS);
 
 FAIL:
     psFree(config);
+    pmConfigDone();
+    psLibFinalize();
+
     exit(EXIT_FAILURE);
 }
