From a5e0a5688b6e142ae7d50084a56d7d9d13be7ff9 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 20 Feb 2021 05:45:52 -0800 Subject: [PATCH] Added string literal to fixup queue --- IDEHelper/Compiler/CeMachine.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/CeMachine.cpp b/IDEHelper/Compiler/CeMachine.cpp index 2f302190..1945bee8 100644 --- a/IDEHelper/Compiler/CeMachine.cpp +++ b/IDEHelper/Compiler/CeMachine.cpp @@ -6423,8 +6423,21 @@ CeErrorKind CeMachine::WriteConstant(CeConstStructData& data, BeConstant* constV if (globalVar->mName.StartsWith("__bfStrObj")) { int stringId = atoi(globalVar->mName.c_str() + 10); - addr_ce stringAddr = ceContext->GetString(stringId); + addr_ce stringAddr; + if (data.mQueueFixups) + { + stringAddr = 0; + CeConstStructFixup fixup; + fixup.mKind = CeConstStructFixup::Kind_StringPtr; + fixup.mValue = stringId; + fixup.mOffset = (int)data.mData.mSize; + data.mFixups.Add(fixup); + } + else + { + stringAddr = ceContext->GetString(stringId); + } auto ptr = data.mData.GrowUninitialized(ceModule->mSystem->mPtrSize); int64 addr64 = stringAddr; memcpy(ptr, &addr64, ceModule->mSystem->mPtrSize);