Skip to content

Commit f463de5

Browse files
committed
In psql, avoid leaking a PGresult after a query is cancelled.
After a query cancel, the tail end of ExecQueryAndProcessResults took care to clear any not-yet-read PGresults; but it forgot about the one it has already read. There would only be such a result when handling a multi-command string made with "\;", so that you'd have to cancel an earlier command in such a string to reach the bug at all. Even then, there would only be leakage of a single PGresult per cancel, so it's not surprising nobody noticed this. But a leak is a leak. Noted while re-reviewing 90f5178, but this is independent of that: it dates to 7844c99. Back-patch to v15 where that came in.
1 parent c21d4c4 commit f463de5

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

src/bin/psql/common.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1812,6 +1812,8 @@ ExecQueryAndProcessResults(const char *query,
18121812

18131813
if (cancel_pressed)
18141814
{
1815+
/* drop this next result, as well as any others not yet read */
1816+
ClearOrSaveResult(result);
18151817
ClearOrSaveAllResults();
18161818
break;
18171819
}

0 commit comments

Comments
 (0)