Skip to content

[Death Knight] guard lesser ghoul expression parsing#11464

Closed
Harmenszoon wants to merge 1 commit into
simulationcraft:midnightfrom
Harmenszoon:codex/fix-dk-lesser-ghoul-expression-guards
Closed

[Death Knight] guard lesser ghoul expression parsing#11464
Harmenszoon wants to merge 1 commit into
simulationcraft:midnightfrom
Harmenszoon:codex/fix-dk-lesser-ghoul-expression-guards

Conversation

@Harmenszoon
Copy link
Copy Markdown
Contributor

Summary

  • Guard Death Knight lesser_ghoul.* expression parsing before reading missing split segments.
  • Return zero for lesser_ghoul.oldest.remains when no lesser ghoul is active.

Cause

death_knight_t::create_expression() handled any expression beginning with lesser_ghoul but read splits[1] and sometimes splits[2] before confirming those segments existed. The same parser also built lesser_ghoul.oldest.remains by reading active_lesser_ghouls[0], which is empty before the first lesser ghoul is active and after all lesser ghouls despawn.

active_lesser_ghouls is populated in lesser_ghoul_pet_t::arise() and erased in demise(), so an empty list is a normal state. Returning zero for oldest.remains matches the inactive/remains behavior used by nearby expressions such as active Death and Decay remains.

Validation

  • Rebuilt build-fast with MSVC/Ninja through VsDevCmd.bat.
  • Before fix: build-fast/simc.exe profiles/MID1/MID1_Death_Knight_Blood.simc actions=/wait,sec=1,if=lesser_ghoul iterations=1 target_error=0 cleanup_threads=1 aborted in fmt\base.h:433.
  • Before fix: build-fast/simc.exe profiles/MID1/MID1_Death_Knight_Blood.simc actions=/wait,sec=1,if=lesser_ghoul.oldest.remains iterations=1 target_error=0 cleanup_threads=1 exited with an access violation.
  • After fix: build-fast/simc.exe profiles/MID1/MID1_Death_Knight_Blood.simc actions=/wait,sec=1,if=lesser_ghoul iterations=1 target_error=0 cleanup_threads=1 reports Unknown lesser_ghoul expression 'lesser_ghoul'.
  • After fix: build-fast/simc.exe profiles/MID1/MID1_Death_Knight_Blood.simc actions=/wait,sec=1,if=lesser_ghoul.oldest iterations=1 target_error=0 cleanup_threads=1 reports Unknown lesser_ghoul expression 'lesser_ghoul.oldest'.
  • After fix: build-fast/simc.exe profiles/MID1/MID1_Death_Knight_Blood.simc actions=/wait,sec=1,if=lesser_ghoul.oldest.remains iterations=1 target_error=0 cleanup_threads=1 output=NUL exits 0.
  • Control: build-fast/simc.exe profiles/MID1/MID1_Death_Knight_Blood.simc actions=/wait,sec=1,if=lesser_ghoul.count iterations=1 target_error=0 cleanup_threads=1 output=NUL exits 0.
  • Smoke: build-fast/simc.exe profiles/MID1/MID1_Death_Knight_Blood.simc iterations=1 target_error=0 cleanup_threads=1 output=NUL exits 0.
  • Smoke: build-fast/simc.exe profiles/CI.simc iterations=10 target_error=0 cleanup_threads=1 output=NUL exits 0 with existing baseline warnings.

Risk

Low. This only tightens expression parser segment checks and handles the normal no-active-lesser-ghoul state for oldest.remains.

@nyterage
Copy link
Copy Markdown
Member

this is old/dead code that should probably be deleted instead, as blizzard added a stacking buff counter for it.

@nyterage nyterage closed this May 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants