Properly close files after read file failure to prevent potential
resource leak. Of course, any such failure aborts pg_upgrade, but might as well be clean about it. Per patch from Grzegorz Ja?kiewicz.
This commit is contained in:
parent
112c3fc6db
commit
f175884520
|
@ -74,7 +74,10 @@ copyAndUpdateFile(migratorContext *ctx, pageCnvCtx *pageConverter,
|
||||||
return "can't open source file";
|
return "can't open source file";
|
||||||
|
|
||||||
if ((dstfd = open(dst, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR)) < 0)
|
if ((dstfd = open(dst, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR)) < 0)
|
||||||
|
{
|
||||||
|
fclose(src_fd);
|
||||||
return "can't create destination file";
|
return "can't create destination file";
|
||||||
|
}
|
||||||
|
|
||||||
while ((bytesRead = read(src_fd, buf, BLCKSZ)) == BLCKSZ)
|
while ((bytesRead = read(src_fd, buf, BLCKSZ)) == BLCKSZ)
|
||||||
{
|
{
|
||||||
|
|
|
@ -103,7 +103,10 @@ getPageVersion(migratorContext *ctx, uint16 *version, const char *pathName)
|
||||||
return "can't open relation";
|
return "can't open relation";
|
||||||
|
|
||||||
if ((bytesRead = read(relfd, &page, sizeof(page))) != sizeof(page))
|
if ((bytesRead = read(relfd, &page, sizeof(page))) != sizeof(page))
|
||||||
|
{
|
||||||
|
close(relfd);
|
||||||
return "can't read page header";
|
return "can't read page header";
|
||||||
|
}
|
||||||
|
|
||||||
*version = PageGetPageLayoutVersion(&page);
|
*version = PageGetPageLayoutVersion(&page);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue