We discard any written data, but we still need to set *amount. Not doing
that is undefined behavior, and causes the write to appear to fail. This
is the cause of a libzstd test failure on GNU/Hurd in particular.

Reported-by: Diego Nieto Cid <dnie...@gmail.com>
Signed-off-by: Sergey Bugaev <buga...@gmail.com>
---

Note: not tested, unlike the glibc patch, but what could go wrong here?

 libstore/zero.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libstore/zero.c b/libstore/zero.c
index b35d29a5..37c239b5 100644
--- a/libstore/zero.c
+++ b/libstore/zero.c
@@ -51,6 +51,7 @@ zero_write (struct store *store,
            store_offset_t addr, size_t index, const void *buf, size_t len,
            size_t *amount)
 {
+  *amount = len;
   return 0;
 }
 
-- 
2.47.1


Reply via email to