diff --git a/src/bin/pg_dump/pg_backup_custom.c b/src/bin/pg_dump/pg_backup_custom.c
index 72bdc39..c7393c5 100644
--- a/src/bin/pg_dump/pg_backup_custom.c
+++ b/src/bin/pg_dump/pg_backup_custom.c
@@ -320,11 +320,17 @@ _WriteData(ArchiveHandle *AH, const void *data, size_t dLen)
 {
 	lclContext *ctx = (lclContext *) AH->formatData;
 	CompressorState *cs = ctx->cs;
+	size_t		res;
 
 	if (dLen == 0)
 		return 0;
 
-	return WriteDataToArchive(AH, cs, data, dLen);
+	res = WriteDataToArchive(AH, cs, data, dLen);
+	if (res != dLen)
+		exit_horribly(modulename, "could not write to output file: %s\n",
+					  strerror(errno));
+
+	return res;
 }
 
 /*
diff --git a/src/bin/pg_dump/pg_backup_directory.c b/src/bin/pg_dump/pg_backup_directory.c
index 1bed8a9..2660cc6 100644
--- a/src/bin/pg_dump/pg_backup_directory.c
+++ b/src/bin/pg_dump/pg_backup_directory.c
@@ -347,6 +347,7 @@ static size_t
 _WriteData(ArchiveHandle *AH, const void *data, size_t dLen)
 {
 	lclContext *ctx = (lclContext *) AH->formatData;
+	size_t		res;
 
 	if (dLen == 0)
 		return 0;
@@ -354,7 +355,12 @@ _WriteData(ArchiveHandle *AH, const void *data, size_t dLen)
 	/* Are we aborting? */
 	checkAborting(AH);
 
-	return cfwrite(data, dLen, ctx->dataFH);
+	res = cfwrite(data, dLen, ctx->dataFH);
+	if (res != dLen)
+		exit_horribly(modulename, "could not write to output file: %s\n",
+					  strerror(errno));
+
+	return res;
 }
 
 /*
