diff --git a/include/haproxy/htx.h b/include/haproxy/htx.h
index e94e3da..b6d9527 100644
--- a/include/haproxy/htx.h
+++ b/include/haproxy/htx.h
@@ -439,7 +439,6 @@
 
 	size = sizeof(*sl) + p1.len + p2.len + p3.len;
 
-	/* FIXME: check size (< 256MB) */
 	blk = htx_add_blk(htx, type, size);
 	if (!blk)
 		return NULL;
diff --git a/src/htx.c b/src/htx.c
index 3b49e78..05ba03b 100644
--- a/src/htx.c
+++ b/src/htx.c
@@ -316,6 +316,7 @@
 {
 	struct htx_blk *blk;
 
+	BUG_ON(blksz >= 256 << 20);
 	blk = htx_reserve_nxblk(htx, blksz);
 	if (!blk)
 		return NULL;
@@ -546,7 +547,6 @@
 	goto add_new_block;
 
   append_data:
-	/* FIXME: check v.len + data.len < 256MB */
 	/* Append data and update the block itself */
 	ptr = htx_get_blk_ptr(htx, tailblk);
 	memcpy(ptr+sz, data.ptr, len);
@@ -559,7 +559,6 @@
 	data = istadv(data, len);
 
   add_new_block:
-	/* FIXME: check data.len (< 256MB) */
 	blk = htx_add_blk(htx, HTX_BLK_DATA, data.len);
 	if (!blk)
 		return NULL;
@@ -915,7 +914,6 @@
        return (struct htx_ret){.ret = sz, .blk = tailblk};
 
   rsv_new_block:
-       /* FIXME: check data.len (< 256MB) */
        blk = htx_add_blk(htx, HTX_BLK_DATA, len);
        if (!blk)
                return (struct htx_ret){.ret = 0, .blk = NULL};
@@ -973,7 +971,6 @@
 		len = room;
 
   append_data:
-	/* FIXME: check v.len + data.len < 256MB */
 	/* Append data and update the block itself */
 	ptr = htx_get_blk_ptr(htx, tailblk);
 	memcpy(ptr + sz, data.ptr, len);
@@ -986,7 +983,6 @@
 	return len;
 
   add_new_block:
-	/* FIXME: check data.len (< 256MB) */
 	blk = htx_add_blk(htx, HTX_BLK_DATA, len);
 	if (!blk)
 		return 0;
