From c36127057f3c4ba3a5b28a201e17ecf924601736 Mon Sep 17 00:00:00 2001 From: Pavan Kumar VH Date: Thu, 3 Sep 2026 12:16:46 +0530 Subject: [PATCH] Fix NaN handling in file read limits The function didn't validate that remainingChars and remainingTokens are finite numbers. If they were NaN or Infinity, Math.max(0, NaN) would return NaN, causing incorrect calculations. Added Number.isFinite() checks to default to 0 for invalid numbers. --- common/src/util/file-read-limits.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/common/src/util/file-read-limits.ts b/common/src/util/file-read-limits.ts index 45bf201957..6c81437a4f 100644 --- a/common/src/util/file-read-limits.ts +++ b/common/src/util/file-read-limits.ts @@ -170,10 +170,12 @@ function limitFileReadContent( remainingTokens: number, countTokens?: (text: string) => number, ): LimitedFileRead { - const charLimit = Math.min(content.length, Math.max(0, remainingChars)) + const safeRemainingChars = Number.isFinite(remainingChars) ? remainingChars : 0 + const charLimit = Math.min(content.length, Math.max(0, safeRemainingChars)) const safeCharLimit = avoidSplittingSurrogatePair(content, charLimit) const charLimitedContent = content.slice(0, safeCharLimit) - const tokenBudget = Math.max(0, remainingTokens) + const safeRemainingTokens = Number.isFinite(remainingTokens) ? remainingTokens : 0 + const tokenBudget = Math.max(0, safeRemainingTokens) const tokenLimit = countTokens ? limitContentByTokens(charLimitedContent, tokenBudget, countTokens) : {