diff --git a/contrib/pg_upgrade/file.c b/contrib/pg_upgrade/file.c index 36dee3eae7b..4f0f1ae4a8f 100644 --- a/contrib/pg_upgrade/file.c +++ b/contrib/pg_upgrade/file.c @@ -37,7 +37,7 @@ copyAndUpdateFile(pageCnvCtx *pageConverter, #ifndef WIN32 if (copy_file(src, dst, force) == -1) #else - if (CopyFile(src, dst, force) == 0) + if (CopyFile(src, dst, !force) == 0) #endif return getErrorText(errno); else diff --git a/contrib/pg_upgrade/util.c b/contrib/pg_upgrade/util.c index de948c3eca6..1e5f3652cad 100644 --- a/contrib/pg_upgrade/util.c +++ b/contrib/pg_upgrade/util.c @@ -226,6 +226,8 @@ getErrorText(int errNum) { #ifdef WIN32 _dosmaperr(GetLastError()); + /* _dosmaperr sets errno, so we copy errno here */ + errNum = errno; #endif return pg_strdup(strerror(errNum)); }