beyond-all-reason / beyond-all-reason/RecoilEngine
`Spring.GetCEGID("nonexistent ceg")` allocates a new ID
Open
Nobody has claimed this yet.
good first issue
- Dominant language
- C++
- Stars
- 683
- Forks
- 293
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 40
Description
- it never returns invalid for nonexistent CEG names, instead it allocates a new ID for them and then returns that ID consistently for given name. So there is no way to check if given CEG actually exists or not.
- not a realistic scenario but by allocating variable numbers of garbage CEGs you can get a desync if synced luarules ever asks about a nonexistent ceg and uses the returned ID.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Trace the Spring.GetCEGID("nonexistent ceg") entry point and the synced luarules path described in the issue. Check how nonexistent CEG names are handled, then verify that they return invalid without allocating a new ID and that synchronized callers cannot desync; add or run focused coverage if the surrounding code provides it.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- game-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100