From afd5fde856675f54a7b5d857f7a173f9a3237b57 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Sun, 5 Aug 2018 05:32:37 +0900 Subject: Reset properly errno before calling write() 6cb3372 enforces errno to ENOSPC when less bytes than what is expected have been written when it is unset, though it forgot to properly reset errno before doing a system call to write(), causing errno to potentially come from a previous system call. Reported-by: Tom Lane Author: Michael Paquier Reviewed-by: Tom Lane Discussion: https://postgr.es/m/31797.1533326676@sss.pgh.pa.us --- src/backend/replication/logical/reorderbuffer.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/backend/replication/logical/reorderbuffer.c') diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c index 3606e9ec7ff..b73ac5b9243 100644 --- a/src/backend/replication/logical/reorderbuffer.c +++ b/src/backend/replication/logical/reorderbuffer.c @@ -2369,6 +2369,7 @@ ReorderBufferSerializeChange(ReorderBuffer *rb, ReorderBufferTXN *txn, ondisk->size = sz; + errno = 0; if (write(fd, rb->outbuf, ondisk->size) != ondisk->size) { int save_errno = errno; -- cgit v1.2.3