Fix whole script file being printed sometimes on error

This commit is contained in:
smallmodel 2024-10-30 21:25:15 +01:00
parent 5ba6c006c2
commit 0d01ea939d
No known key found for this signature in database
GPG key ID: 9F2D623CEDF08512
2 changed files with 7 additions and 4 deletions

View file

@ -69,7 +69,7 @@ bool AbstractScript::GetSourceAt(size_t sourcePos, str *sourceLine, int& column,
for (i = 0; i < ARRAY_LEN(cachedInfo); i++) {
sourceinfo_t *info = &cachedInfo[i];
if (sourcePos > info->sourcePos && (!minCachedInfo || info->sourcePos > minCachedInfo->sourcePos)) {
if (info->line && sourcePos > info->sourcePos && (!minCachedInfo || info->sourcePos > minCachedInfo->sourcePos)) {
minCachedInfo = info;
}
}
@ -78,6 +78,7 @@ bool AbstractScript::GetSourceAt(size_t sourcePos, str *sourceLine, int& column,
start = minCachedInfo->sourcePos;
line = minCachedInfo->line;
column = minCachedInfo->column;
posLine = minCachedInfo->startLinePos;
}
}
@ -107,9 +108,10 @@ bool AbstractScript::GetSourceAt(size_t sourcePos, str *sourceLine, int& column,
*p = old_token;
cachedInfo[cachedInfoIndex].sourcePos = sourcePos;
cachedInfo[cachedInfoIndex].line = line;
cachedInfo[cachedInfoIndex].column = column;
cachedInfo[cachedInfoIndex].sourcePos = sourcePos;
cachedInfo[cachedInfoIndex].line = line;
cachedInfo[cachedInfoIndex].column = column;
cachedInfo[cachedInfoIndex].startLinePos = posLine;
cachedInfoIndex = (cachedInfoIndex + 1) % ARRAY_LEN(cachedInfo);
return true;

View file

@ -41,6 +41,7 @@ typedef struct {
struct sourceinfo_t {
unsigned int sourcePos;
unsigned int startLinePos;
int column;
int line;