@@ -229,7 +229,7 @@ TEST_CASE("rxSessionWritePayload")
229229 REQUIRE (rxs.payload [9 ] == 9 );
230230
231231 // Restart frees the buffer. The transfer-ID will be incremented, too.
232- rxSessionRestart (&ins.getInstance (), &rxs);
232+ rxSessionRestart (&ins.getInstance (), &rxs, 10 );
233233 REQUIRE (ins.getAllocator ().getNumAllocatedFragments () == 0 );
234234 REQUIRE (ins.getAllocator ().getTotalAllocatedAmount () == 0 );
235235 REQUIRE (rxs.payload_size == 0 );
@@ -242,7 +242,7 @@ TEST_CASE("rxSessionWritePayload")
242242 rxs.calculated_crc = 0x1234U ;
243243 rxs.transfer_id = 23 ;
244244 rxs.toggle = false ;
245- rxSessionRestart (&ins.getInstance (), &rxs);
245+ rxSessionRestart (&ins.getInstance (), &rxs, 10 );
246246 REQUIRE (ins.getAllocator ().getNumAllocatedFragments () == 0 );
247247 REQUIRE (ins.getAllocator ().getTotalAllocatedAmount () == 0 );
248248 REQUIRE (rxs.payload_size == 0 );
@@ -255,7 +255,7 @@ TEST_CASE("rxSessionWritePayload")
255255 rxs.calculated_crc = 0x1234U ;
256256 rxs.transfer_id = 31 ;
257257 rxs.toggle = false ;
258- rxSessionRestart (&ins.getInstance (), &rxs);
258+ rxSessionRestart (&ins.getInstance (), &rxs, 10 );
259259 REQUIRE (ins.getAllocator ().getNumAllocatedFragments () == 0 );
260260 REQUIRE (ins.getAllocator ().getTotalAllocatedAmount () == 0 );
261261 REQUIRE (rxs.payload_size == 0 );
@@ -340,10 +340,11 @@ TEST_CASE("rxSessionUpdate")
340340 REQUIRE (transfer.metadata .remote_node_id == 55 );
341341 REQUIRE (transfer.metadata .transfer_id == 11 );
342342 REQUIRE (transfer.payload_size == 3 );
343+ REQUIRE (transfer.allocated_size == 16 );
343344 REQUIRE (0 == std::memcmp (transfer.payload , " \x01\x01\x01 " , 3 ));
344345 REQUIRE (ins.getAllocator ().getNumAllocatedFragments () == 1 );
345346 REQUIRE (ins.getAllocator ().getTotalAllocatedAmount () == 16 );
346- ins.getAllocator ().deallocate (transfer.payload );
347+ ins.getAllocator ().deallocate (transfer.payload , transfer. allocated_size );
347348
348349 // Valid next transfer, wrong transport.
349350 frame.timestamp_usec = 10'000'100 ;
@@ -376,10 +377,11 @@ TEST_CASE("rxSessionUpdate")
376377 REQUIRE (transfer.metadata .remote_node_id == 55 );
377378 REQUIRE (transfer.metadata .transfer_id == 12 );
378379 REQUIRE (transfer.payload_size == 3 );
380+ REQUIRE (transfer.allocated_size == 16 );
379381 REQUIRE (0 == std::memcmp (transfer.payload , " \x03\x03\x03 " , 3 ));
380382 REQUIRE (ins.getAllocator ().getNumAllocatedFragments () == 1 );
381383 REQUIRE (ins.getAllocator ().getTotalAllocatedAmount () == 16 );
382- ins.getAllocator ().deallocate (transfer.payload );
384+ ins.getAllocator ().deallocate (transfer.payload , transfer. allocated_size );
383385
384386 // Same TID.
385387 frame.timestamp_usec = 10'000'200 ;
@@ -413,10 +415,11 @@ TEST_CASE("rxSessionUpdate")
413415 REQUIRE (transfer.metadata .remote_node_id == 55 );
414416 REQUIRE (transfer.metadata .transfer_id == 12 );
415417 REQUIRE (transfer.payload_size == 3 );
418+ REQUIRE (transfer.allocated_size == 16 );
416419 REQUIRE (0 == std::memcmp (transfer.payload , " \x05\x05\x05 " , 3 ));
417420 REQUIRE (ins.getAllocator ().getNumAllocatedFragments () == 1 );
418421 REQUIRE (ins.getAllocator ().getTotalAllocatedAmount () == 16 );
419- ins.getAllocator ().deallocate (transfer.payload );
422+ ins.getAllocator ().deallocate (transfer.payload , transfer. allocated_size );
420423
421424 // Restart due to TID timeout, switch iface.
422425 frame.timestamp_usec = 20'000'000 ;
@@ -437,10 +440,11 @@ TEST_CASE("rxSessionUpdate")
437440 REQUIRE (transfer.metadata .remote_node_id == 55 );
438441 REQUIRE (transfer.metadata .transfer_id == 11 );
439442 REQUIRE (transfer.payload_size == 3 );
443+ REQUIRE (transfer.allocated_size == 16 );
440444 REQUIRE (0 == std::memcmp (transfer.payload , " \x05\x05\x05 " , 3 ));
441445 REQUIRE (ins.getAllocator ().getNumAllocatedFragments () == 1 );
442446 REQUIRE (ins.getAllocator ().getTotalAllocatedAmount () == 16 );
443- ins.getAllocator ().deallocate (transfer.payload );
447+ ins.getAllocator ().deallocate (transfer.payload , transfer. allocated_size );
444448
445449 // Multi-frame, first.
446450 frame.timestamp_usec = 20'000'100 ;
@@ -515,10 +519,11 @@ TEST_CASE("rxSessionUpdate")
515519 REQUIRE (transfer.metadata .remote_node_id == 55 );
516520 REQUIRE (transfer.metadata .transfer_id == 13 );
517521 REQUIRE (transfer.payload_size == 16 );
522+ REQUIRE (transfer.allocated_size == 16 );
518523 REQUIRE (0 == std::memcmp (transfer.payload , " \x06\x06\x06\x06\x06\x06\x06\x07\x07\x07\x07\x07\x07\x07\x09\x09 " , 16 ));
519524 REQUIRE (ins.getAllocator ().getNumAllocatedFragments () == 1 );
520525 REQUIRE (ins.getAllocator ().getTotalAllocatedAmount () == 16 );
521- ins.getAllocator ().deallocate (transfer.payload );
526+ ins.getAllocator ().deallocate (transfer.payload , transfer. allocated_size );
522527
523528 // TID timeout does not occur until SOT; see https://github.com/OpenCyphal/libcanard/issues/212.
524529 frame.timestamp_usec = 30'000'000 ;
@@ -616,10 +621,11 @@ TEST_CASE("rxSessionUpdate")
616621 REQUIRE (transfer.metadata .remote_node_id == 55 );
617622 REQUIRE (transfer.metadata .transfer_id == 10 );
618623 REQUIRE (transfer.payload_size == 10 );
624+ REQUIRE (transfer.allocated_size == 16 );
619625 REQUIRE (0 == std::memcmp (transfer.payload , " \x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0D\x0D\x0D " , 10 ));
620626 REQUIRE (ins.getAllocator ().getNumAllocatedFragments () == 1 );
621627 REQUIRE (ins.getAllocator ().getTotalAllocatedAmount () == 16 );
622- ins.getAllocator ().deallocate (transfer.payload );
628+ ins.getAllocator ().deallocate (transfer.payload , transfer. allocated_size );
623629
624630 // CRC SPLIT -- first frame.
625631 frame.timestamp_usec = 30'000'000 ;
@@ -663,10 +669,11 @@ TEST_CASE("rxSessionUpdate")
663669 REQUIRE (transfer.metadata .remote_node_id == 55 );
664670 REQUIRE (transfer.metadata .transfer_id == 0 );
665671 REQUIRE (transfer.payload_size == 7 ); // ONE CRC BYTE BACKTRACKED!
672+ REQUIRE (transfer.allocated_size == 16 );
666673 REQUIRE (0 == std::memcmp (transfer.payload , " \x0E\x0E\x0E\x0E\x0E\x0E\x0E " , 7 ));
667674 REQUIRE (ins.getAllocator ().getNumAllocatedFragments () == 1 );
668675 REQUIRE (ins.getAllocator ().getTotalAllocatedAmount () == 16 );
669- ins.getAllocator ().deallocate (transfer.payload );
676+ ins.getAllocator ().deallocate (transfer.payload , transfer. allocated_size );
670677
671678 // BAD CRC -- first frame.
672679 frame.timestamp_usec = 30'001'000 ;
0 commit comments