Gildas 2 лет назад
Родитель
Сommit
515043d20d
1 измененных файлов с 13 добавлено и 9 удалено
  1. 13 9
      src/lib/yabson/yabson.js

+ 13 - 9
src/lib/yabson/yabson.js

@@ -312,14 +312,18 @@ async function serializeSymbols(data, value) {
 }
 
 async function serializeOwnProperties(data, value) {
-	let entries = Object.entries(value);
-	if (testArray(value)) {
-		entries = entries.filter(([key]) => !testInteger(Number(key)));
-	}
-	await serializeValue(data, entries.length);
-	for (const [key, value] of entries) {
-		await serializeString(data, key);
-		await serializeValue(data, value);
+	if (!ArrayBuffer.isView(value)) {
+		let entries = Object.entries(value);
+		if (testArray(value)) {
+			entries = entries.filter(([key]) => !testInteger(Number(key)));
+		}
+		await serializeValue(data, entries.length);
+		for (const [key, value] of entries) {
+			await serializeString(data, key);
+			await serializeValue(data, value);
+		}
+	} else {
+		await serializeValue(data, 0);
 	}
 }
 
@@ -350,7 +354,7 @@ async function serializeString(data, string) {
 
 async function serializeTypedArray(data, array) {
 	await serializeValue(data, array.length);
-	await data.append(new Uint8Array(array.buffer));
+	await data.append(array instanceof Uint8Array ? array : new Uint8Array(array.buffer));
 }
 
 async function serializeArrayBuffer(data, arrayBuffer) {