Skip to content

Commit 2a87ef8

Browse files
committed
[Cleanup] concat
1 parent 5cb8ea9 commit 2a87ef8

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

assembly/buffer/index.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,22 @@ export class Buffer extends Uint8Array {
1212
return new Buffer(size);
1313
}
1414

15-
public static concat(items: Buffer[], length: i32): Buffer {
15+
public static concat(items: Array<Buffer>, length: i32): Buffer {
16+
// assert the list itself isn't null
17+
assert(items != null);
18+
1619
let size: usize = 0;
17-
let itemCount = usize(items.length);
20+
let itemCount = <usize>items.length;
1821
let itemsDataStart = items.dataStart;
1922

2023
for (let i: usize = 0; i < itemCount; i++) {
2124
let item = load<usize>(itemsDataStart + (i << alignof<usize>()));
2225
if (item == 0) continue;
2326
size += <usize>load<u32>(item, offsetof<Uint8Array>("dataLength"));
2427
}
25-
size = min<usize>(usize(length), size);
26-
assert(items);
28+
29+
// account for passed concat buffer length
30+
size = min<usize>(<usize>length, size);
2731

2832
let buffer = __alloc(size, idof<ArrayBuffer>());
2933
let result = changetype<Buffer>(__alloc(offsetof<Buffer>(), idof<Buffer>()));
@@ -33,7 +37,7 @@ export class Buffer extends Uint8Array {
3337
let start: usize = result.dataStart;
3438
for (let i: usize = 0; i < itemCount && size > 0; i++) {
3539
let item = load<usize>(itemsDataStart + (i << alignof<usize>()));
36-
if (item == 0) continue;
40+
if (item == null) continue;
3741
let count = min<u32>(size, <usize>load<u32>(item, offsetof<Uint8Array>("dataLength")));
3842
memory.copy(start, load<usize>(item, offsetof<Uint8Array>("dataStart")), count);
3943
start += count;

0 commit comments

Comments
 (0)