Thanks Tom for fixing this memory leak.
On Mon, 16 Mar 2026 at 00:54, Tom Lane <
tgl@sss.pgh.pa.us> wrote:
>
> Fix small memory leak in get_dbname_oid_list_from_mfile().
>
> Coverity complained that this function leaked the dumpdirpath string,
> which it did. But we don't need to make a copy at all, because
> there's not really any point in trimming trailing slashes from the
> directory name here. If that were needed, the initial
> file_exists_in_directory() test would have failed, since it doesn't
> bother with that (and neither does anyplace else in this file).
> Moreover, if we did want that, reimplementing canonicalize_path()
> poorly is not the way to proceed. Arguably, all of this code should
> be reexamined with an eye to using src/port/path.c's facilities, but
> for today I'll settle for getting rid of the memory leak.
>
> Branch
> ------
> master
>
> Details
> -------
>
https://git.postgresql.org/pg/commitdiff/bb53b8d359d33f10b6274be743c42f6e8ecfbb84>
> Modified Files
> --------------
> src/bin/pg_dump/pg_restore.c | 16 +++-------------
> 1 file changed, 3 insertions(+), 13 deletions(-)
>
We were trimming slashes due to the below test case.
Ex: ./pg_dumpall -f dumpdir --format=d
./pg_restore dumpdir/ -d postgres -C --format=d --verbose
pg_restore: found database "template1" (OID: 1) in file "dumpdir//map.dat"
pg_restore: found database "postgres" (OID: 5) in file "dumpdir//map.dat"
pg_restore: found 2 database names in "map.dat"
pg_restore: need to restore 2 databases out of 2 databases
Here, before map.dat, there were 2 slashes so we were trimming slashes. Please add your opinion for this output.