Skip to content

Fix the bug where warhead flags are read twice#2128

Draft
DeathFishAtEase wants to merge 1 commit intoPhobos-developers:developfrom
DeathFishAtEase:duplicateloadingfix
Draft

Fix the bug where warhead flags are read twice#2128
DeathFishAtEase wants to merge 1 commit intoPhobos-developers:developfrom
DeathFishAtEase:duplicateloadingfix

Conversation

@DeathFishAtEase
Copy link
Collaborator

Does anyone know why repeated loading is necessary? I discovered this while handling #2093 and suspect it is a bug.
By switching to the develop branch and adding log in WarheadTypeExt::ExtData::LoadFromINIFile, it can be observed that each warhead is loaded twice.
For example, based on 6035b7b, make the following modifications:

void WarheadTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI)
{
	auto pThis = this->OwnerObject();
	const char* pSection = pThis->ID;
+	static std::map<uintptr_t, int> iniCallCount;
+	uintptr_t iniAddr = reinterpret_cast<uintptr_t>(pINI);
+	int count = ++iniCallCount[iniAddr];
+	Debug::Log("[DEBUG] LoadFromINIFile for [%s] count: %d\n", pSection, count);
	INI_EX exINI(pINI);

In debug.log, it can be observed:
image

@DeathFishAtEase DeathFishAtEase added ❓Vanilla bug Vanilla game bugs that are requested to be fixed No Documentation Needed No documentation needed whatsoever labels Mar 4, 2026
@github-actions
Copy link

github-actions bot commented Mar 4, 2026

Nightly build for this pull request:

This comment is automatic and is meant to allow guests to get latest nightly builds for this pull request without registering. It is updated on every successful build.

@TaranDahl
Copy link
Contributor

What exactly causes it to be read twice?

@DeathFishAtEase DeathFishAtEase marked this pull request as draft March 5, 2026 08:44
@DeathFishAtEase
Copy link
Collaborator Author

What exactly causes it to be read twice?

See 0x66919B.

Later, it was changed to skip this part via LJMP, 0x66919B, 0x6691B7, which theoretically handles it more thoroughly than the current static check. However, after that, when adding a Log directly in the hook WarheadTypeClass_LoadFromINI, it was still output twice. Currently, a better solution is still being sought.

@TaranDahl
Copy link
Contributor

If it's not easy to solve, it might as well be left alone.
LoadFromINI isn't a performance-sensitive function.

@DeathFishAtEase
Copy link
Collaborator Author

If it's not easy to solve, it might as well be left alone. LoadFromINI isn't a performance-sensitive function.

If this problem is left unresolved, all the old flags that have been replaced on the warhead will create identical Log entries twice. If the problem exists, it would be better to resolve it as thoroughly as possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

No Documentation Needed No documentation needed whatsoever ❓Vanilla bug Vanilla game bugs that are requested to be fixed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants