diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index 432fbeeb1c..0995a61e25 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -603,7 +603,7 @@ open_auth_file(const char *filename, int elevel, int depth,
 
 	/*
 	 * When opening the top-level file, create the memory context used for the
-	 * tokenization.  This will be closed with this file when coming back to
+	 * tokenization.  This will be deleted with this file when coming back to
 	 * this level of cleanup.
 	 */
 	if (depth == 0)
@@ -613,8 +613,8 @@ open_auth_file(const char *filename, int elevel, int depth,
 		 * already.
 		 */
 		tokenize_context = AllocSetContextCreate(CurrentMemoryContext,
-												 "tokenize_context",
-												 ALLOCSET_START_SMALL_SIZES);
+							 "tokenize_context",
+							 ALLOCSET_START_SMALL_SIZES);
 	}
 
 	file = AllocateFile(filename, "r");
@@ -622,6 +622,11 @@ open_auth_file(const char *filename, int elevel, int depth,
 	{
 		int			save_errno = errno;
 
+		if (depth == 0)
+		{
+			MemoryContextDelete(tokenize_context);
+			tokenize_context = NULL;
+		}
 		ereport(elevel,
 				(errcode_for_file_access(),
 				 errmsg("could not open file \"%s\": %m",
