From 76dace4d369e7a62a0f380878205348306d9d7ef Mon Sep 17 00:00:00 2001 From: Marcel Wiessler Date: Tue, 28 Jul 2026 16:50:59 +0200 Subject: [PATCH] Fix RangeError when all SH arrays are present shArrays.length = findIndex(...) sets the length to -1 when no entry is missing (all SH bands resident, e.g. maxSh 3), which throws 'Invalid array length'. Only truncate when a missing entry exists. --- src/SplatPager.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/SplatPager.ts b/src/SplatPager.ts index d9f33d33..ce1a4d5a 100644 --- a/src/SplatPager.ts +++ b/src/SplatPager.ts @@ -1170,7 +1170,10 @@ export class SplatPager { data.extra.sh3a as Uint32Array, data.extra.sh3b as Uint32Array, ]; - shArrays.length = shArrays.findIndex((sh) => !sh); + // findIndex returns -1 when all SH arrays are present — keep the full list + // (Array.length = -1 throws a RangeError) + const firstMissingSh = shArrays.findIndex((sh) => !sh); + if (firstMissingSh >= 0) shArrays.length = firstMissingSh; this.newUploads.push({ page, numSplats, @@ -1185,7 +1188,10 @@ export class SplatPager { data.extra.sh2 as Uint32Array, data.extra.sh3 as Uint32Array, ]; - shArrays.length = shArrays.findIndex((sh) => !sh); + // findIndex returns -1 when all SH arrays are present — keep the full list + // (Array.length = -1 throws a RangeError) + const firstMissingSh = shArrays.findIndex((sh) => !sh); + if (firstMissingSh >= 0) shArrays.length = firstMissingSh; this.newUploads.push({ page, numSplats,