aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/utils/misc/guc-file.l20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/backend/utils/misc/guc-file.l b/src/backend/utils/misc/guc-file.l
index ec9e0322021..a5b9d6ac77c 100644
--- a/src/backend/utils/misc/guc-file.l
+++ b/src/backend/utils/misc/guc-file.l
@@ -469,18 +469,22 @@ ParseConfigFile(const char *config_file, const char *calling_file, bool strict,
(errcode_for_file_access(),
errmsg("could not open configuration file \"%s\": %m",
abs_path)));
- return false;
+ OK = false;
+ goto cleanup;
}
ereport(LOG,
(errmsg("skipping missing configuration file \"%s\"",
abs_path)));
- return OK;
+ OK = true;
+ goto cleanup;
}
OK = ParseConfigFp(fp, abs_path, depth, elevel, head_p, tail_p);
- FreeFile(fp);
+cleanup:
+ if (fp)
+ FreeFile(fp);
pfree(abs_path);
return OK;
@@ -748,7 +752,8 @@ ParseConfigDirectory(const char *includedir,
(errcode_for_file_access(),
errmsg("could not open configuration directory \"%s\": %m",
directory)));
- return false;
+ status = false;
+ goto cleanup;
}
/*
@@ -803,7 +808,8 @@ ParseConfigDirectory(const char *includedir,
(errcode_for_file_access(),
errmsg("could not stat file \"%s\": %m",
filename)));
- return false;
+ status = false;
+ goto cleanup;
}
}
@@ -824,7 +830,9 @@ ParseConfigDirectory(const char *includedir,
status = true;
cleanup:
- FreeDir(d);
+ if (d)
+ FreeDir(d);
+ pfree(directory);
return status;
}