beyond-all-reason / beyond-all-reason/RecoilEngine

`Spring.GetCEGID("nonexistent ceg")` allocates a new ID

Open
#1,779 1 comment 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.