diff --git a/packages/bundle-size/README.md b/packages/bundle-size/README.md
index 27fbec515..92d2b4088 100644
--- a/packages/bundle-size/README.md
+++ b/packages/bundle-size/README.md
@@ -16,11 +16,11 @@ usually do. We repeat this for an increasing number of files.
| code generator | files | bundle size | minified | compressed |
| ------------------- | ----: | ----------: | --------: | ---------: |
-| Protobuf-ES | 1 | 132,088 b | 68,483 b | 15,718 b |
-| Protobuf-ES | 4 | 134,277 b | 69,993 b | 16,450 b |
-| Protobuf-ES | 8 | 137,039 b | 71,764 b | 16,974 b |
-| Protobuf-ES | 16 | 147,489 b | 79,745 b | 19,317 b |
-| Protobuf-ES | 32 | 175,280 b | 101,763 b | 24,760 b |
+| Protobuf-ES | 1 | 132,159 b | 68,489 b | 15,756 b |
+| Protobuf-ES | 4 | 134,348 b | 69,996 b | 16,428 b |
+| Protobuf-ES | 8 | 137,110 b | 71,767 b | 16,932 b |
+| Protobuf-ES | 16 | 147,560 b | 79,748 b | 19,320 b |
+| Protobuf-ES | 32 | 175,351 b | 101,766 b | 24,771 b |
| protobuf-javascript | 1 | 104,048 b | 70,320 b | 15,540 b |
| protobuf-javascript | 4 | 130,537 b | 85,672 b | 16,956 b |
| protobuf-javascript | 8 | 152,429 b | 98,044 b | 18,138 b |
diff --git a/packages/bundle-size/chart.svg b/packages/bundle-size/chart.svg
index c7f8de109..f6f6b7baf 100644
--- a/packages/bundle-size/chart.svg
+++ b/packages/bundle-size/chart.svg
@@ -43,14 +43,14 @@
0 KiB
-
+
Protobuf-ES
-Protobuf-ES 15.35 KiB for 1 files
-Protobuf-ES 16.06 KiB for 4 files
-Protobuf-ES 16.58 KiB for 8 files
-Protobuf-ES 18.86 KiB for 16 files
-Protobuf-ES 24.18 KiB for 32 files
+Protobuf-ES 15.39 KiB for 1 files
+Protobuf-ES 16.04 KiB for 4 files
+Protobuf-ES 16.54 KiB for 8 files
+Protobuf-ES 18.87 KiB for 16 files
+Protobuf-ES 24.19 KiB for 32 files
diff --git a/packages/protobuf/src/from-binary.ts b/packages/protobuf/src/from-binary.ts
index cdb54d284..c58068298 100644
--- a/packages/protobuf/src/from-binary.ts
+++ b/packages/protobuf/src/from-binary.ts
@@ -22,11 +22,8 @@ import type {
import { scalarZeroValue } from "./reflect/scalar.js";
import type { ScalarValue } from "./reflect/scalar.js";
import { reflect } from "./reflect/reflect.js";
-import {
- BinaryReader,
- BinaryWriter,
- WireType,
-} from "./wire/binary-encoding.js";
+import { BinaryReader, WireType } from "./wire/binary-encoding.js";
+import { varint32write } from "./wire/varint.js";
/**
* Options for parsing binary data.
@@ -163,9 +160,14 @@ export function readField(
if (ok) {
message.set(field, val);
} else if (options.readUnknownFields) {
- const data = new BinaryWriter().int32(val as number).finish();
+ const bytes: number[] = [];
+ varint32write(val as number, bytes);
const unknownFields = message.getUnknown() ?? [];
- unknownFields.push({ no: field.number, wireType, data });
+ unknownFields.push({
+ no: field.number,
+ wireType,
+ data: new Uint8Array(bytes),
+ });
message.setUnknown(unknownFields);
}
}