s4: free popt context in torture
[samba.git] / source4 / torture / smbtorture.c
index 018f39f00d9ee42e6000ce6cf09f9f71cd76b30a..90b2b04cd88b6a8790b3881c43c061e204793117 100644 (file)
@@ -587,6 +587,7 @@ int main(int argc, const char *argv[])
 
        if (list_testsuites) {
                print_testsuite_list();
+               poptFreeContext(pc);
                talloc_free(mem_ctx);
                popt_free_cmdline_credentials();
                return 0;
@@ -610,6 +611,7 @@ int main(int argc, const char *argv[])
                                print_test_list(torture_root, NULL, argv_new[i]);
                        }
                }
+               poptFreeContext(pc);
                talloc_free(mem_ctx);
                popt_free_cmdline_credentials();
                return 0;
@@ -638,6 +640,7 @@ int main(int argc, const char *argv[])
        if (basedir != NULL) {
                if (basedir[0] != '/') {
                        fprintf(stderr, "Please specify an absolute path to --basedir\n");
+                       poptFreeContext(pc);
                        talloc_free(mem_ctx);
                        return 1;
                }
@@ -646,6 +649,7 @@ int main(int argc, const char *argv[])
                char *pwd = talloc_size(torture, PATH_MAX);
                if (!getcwd(pwd, PATH_MAX)) {
                        fprintf(stderr, "Unable to determine current working directory\n");
+                       poptFreeContext(pc);
                        talloc_free(mem_ctx);
                        return 1;
                }
@@ -653,12 +657,14 @@ int main(int argc, const char *argv[])
        }
        if (!outputdir) {
                fprintf(stderr, "Could not allocate per-run output dir\n");
+               poptFreeContext(pc);
                talloc_free(mem_ctx);
                return 1;
        }
        torture->outputdir = mkdtemp(outputdir);
        if (!torture->outputdir) {
                perror("Failed to make temp output dir");
+               poptFreeContext(pc);
                talloc_free(mem_ctx);
                return 1;
        }
@@ -700,10 +706,12 @@ int main(int argc, const char *argv[])
        torture_deltree_outputdir(torture);
 
        if (torture->results->returncode && correct) {
+               poptFreeContext(pc);
                talloc_free(mem_ctx);
                popt_free_cmdline_credentials();
                return(0);
        } else {
+               poptFreeContext(pc);
                talloc_free(mem_ctx);
                return(1);
        }