[dart][inspect] Fix bug in Block.nameUtf8
It was returning the entire payload, not truncating to the actual name length.
Test: fx run-host-tests fuchsia_inspect_package_unittests
CF-597 #progress
Change-Id: I35b7da4665f68cf0c7b5c7dafe557d6cd6025fb1
diff --git a/public/dart/fuchsia_inspect/lib/src/vmo/block.dart b/public/dart/fuchsia_inspect/lib/src/vmo/block.dart
index bec39f1..eecd817 100644
--- a/public/dart/fuchsia_inspect/lib/src/vmo/block.dart
+++ b/public/dart/fuchsia_inspect/lib/src/vmo/block.dart
@@ -346,7 +346,8 @@
@visibleForTesting
ByteData get nameUtf8 {
_checkType(BlockType.nameUtf8);
- return payloadBytes;
+ return ByteData.view(payloadBytes.buffer, payloadBytes.offsetInBytes,
+ _header.read(nameLengthBits));
}
/// Adds a [BlockType.reserved] block to the head of a [BlockType.extent]
diff --git a/public/dart/fuchsia_inspect/test/vmo/block_test.dart b/public/dart/fuchsia_inspect/test/vmo/block_test.dart
index c95cf27..c504707 100644
--- a/public/dart/fuchsia_inspect/test/vmo/block_test.dart
+++ b/public/dart/fuchsia_inspect/test/vmo/block_test.dart
@@ -242,9 +242,13 @@
test('Becoming a name', () {
final vmo = FakeVmo(64);
- Block.create(vmo, 2).becomeName('abc');
+ final block = Block.create(vmo, 2)..becomeName('abc');
compare(vmo, 32,
'${hexChar(BlockType.nameUtf8.value)} 1 03 0000 0000 0000 61 62 63');
+ expect(
+ Uint8List.view(
+ block.nameUtf8.buffer, 0, block.nameUtf8.lengthInBytes),
+ Uint8List.fromList([0x61, 0x62, 0x63]));
});
test('Becoming and setting an extent', () {