{
int optidx = 0;
pid_t pid;
- poptContext pc;
+ poptContext pc = NULL;
const char *instruction_file;
const char **args;
const char *program;
if (argc == 1) {
poptPrintHelp(pc, stderr, 0);
- return 1;
+ goto out;
}
while ((optidx = poptGetNextOpt(pc)) != -1) {
args = poptGetArgs(pc);
if (args == NULL) {
poptPrintHelp(pc, stderr, 0);
- return 1;
+ goto out;
}
program_args = (char * const *)discard_const_p(char *, args);
err(1, "Failed to fork");
/* Never reached */
- return 1;
+ goto out;
case 0:
if(setsid()<0)
err(1, "Failed to exec: %s", program);
/* Never reached */
- return 1;
+ goto out;
default:
close(slave);
{
sigaction(SIGALRM, &sa, NULL);
}
+ poptFreeContext(pc);
return eval_parent(pid);
}
/* Never reached */
+
+out:
+ poptFreeContext(pc);
return 1;
}