changeset 798:68939d7b83f8

objstore: assert that dirblock_serialize produced at most one block of data We don't care how much data was written to the buffer before we got it. Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Thu, 02 Apr 2020 21:02:22 -0400
parents cdab6866a016
children 4b569a84039a
files src/objstore/dirblock.c
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/objstore/dirblock.c	Thu Apr 02 20:59:43 2020 -0400
+++ b/src/objstore/dirblock.c	Thu Apr 02 21:02:22 2020 -0400
@@ -137,6 +137,7 @@
 
 int dirblock_serialize(struct dirblock *block, struct buffer *buf)
 {
+	const size_t old_size = buffer_size(buf);
 	struct obj_dir_header hdr;
 	size_t off;
 	size_t i, j;
@@ -209,9 +210,9 @@
 		}
 	}
 
-	ASSERT3U(buffer_size(buf), <=, DIR_BLOCK_SIZE);
+	ASSERT3U(buffer_size(buf) - old_size, <=, DIR_BLOCK_SIZE);
 
-	return buffer_truncate(buf, DIR_BLOCK_SIZE);
+	return buffer_truncate(buf, old_size + DIR_BLOCK_SIZE);
 }
 
 static ssize_t __find_dirent(struct dirblock *block, const char *name)