diff options
-rw-r--r-- | src/backend/utils/misc/guc-file.l | 20 |
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; } |