GfxPack: Log line number for errors caused by malformed expressions

This commit is contained in:
Exzap 2026-04-23 02:05:24 +02:00
parent c080b7385e
commit 15ceda1233
2 changed files with 9 additions and 4 deletions

View File

@ -59,6 +59,8 @@ public:
PatchEntry() {};
virtual ~PatchEntry() {};
virtual sint32 getLineNumber() { return -1; }
// apply relocation or evaluate any expressions for this entry
virtual PATCH_RESOLVE_RESULT resolve(PatchContext_t& ctx) = 0;
};
@ -74,7 +76,7 @@ public:
m_expressionString.assign(expressionStr, expressionLen);
}
sint32 getLineNumber() { return m_lineNumber; }
sint32 getLineNumber() override { return m_lineNumber; }
PATCH_RESOLVE_RESULT resolve(PatchContext_t& ctx) override;
@ -109,7 +111,7 @@ public:
m_expressionString.assign(expressionStr, expressionLen);
}
sint32 getLineNumber() { return m_lineNumber; }
sint32 getLineNumber() override { return m_lineNumber; }
PATCH_RESOLVE_RESULT resolve(PatchContext_t& ctx) override;
@ -134,7 +136,7 @@ public:
m_symbolName.assign(symbolName, symbolNameLen);
}
sint32 getLineNumber() { return m_lineNumber; }
sint32 getLineNumber() override { return m_lineNumber; }
PATCH_RESOLVE_RESULT resolve(PatchContext_t& ctx) override;
@ -179,6 +181,8 @@ public:
delete[] m_dataBackup;
}
sint32 getLineNumber() override { return m_lineNumber; }
uint32 getAddr() const
{
return m_addr;

View File

@ -606,7 +606,8 @@ bool _resolverPass(PatchContext_t& patchContext, std::vector<UnresolvedPatches_t
else
{
// unknown error
patchContext.errorHandler.printError(resolverState.currentGroup, -1, "Internal error");
sint32 lineNumber = (*it)->getLineNumber();
patchContext.errorHandler.printError(resolverState.currentGroup, lineNumber, "Unable to parse expression or other internal error");
it++;
}
}