fix(ecs): killing an entity twice makes spawnEntity return the same id twice
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 85/100
Piste de recherche
Lisez les deux plages liées dans modules/ecs/wasm/Registry.hpp (lignes 142–151 et 172–177), puis examinez les tests dans modules/ecs/test. Vérifiez comment les ID d’entité sont attribués et comment les entités mortes sont suivies. Ajoutez des tests pour tuer deux fois la même entité et pour rejeter un ID supérieur ou égal à _next_entity ; le résultat attendu est que des spawns répétés renvoient des ID distincts et que les morts invalides ne corrompent pas l’allocation.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Which package is this bug report for?
ecs
Issue description
kill_entity pushes to _dead_entities with no check. A second kill of the same entity (gameplay, then scene unload or the editor) leaves [e, e], so the next two spawn_entity() calls return the same id and two live entities share components. An id >= _next_entity is accepted too.
Where:
Evidence:
void kill_entity(Entity const &entity)
{
_dead_entities.push_back(entity);
for (...) remove_function(*this, entity);
}
Suggested fix: Return early when entity >= _next_entity or the entity is already dead (a std::vector<bool> alive flag makes the check O(1)). Add a double-kill test in modules/ecs/test.
Found during a code audit of main at be72076.
Code sample
No response
Versions
- Engine
mainat be72076 - pnpm 12.0.0, Node.js 26, Bun 1.3.14
Issue priority
High (immediate attention needed)
I have tested this issue on a development release
be72076
- Langage dominant
- TypeScript
- Étoiles
- 7
- Forks
- 2
- Merge moyen
- 1 j 17 h
- PR mergées (30 j)
- 17
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de NanoForge-dev/Engine
-
dependencies enhancement good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
NanoForge-dev/Engine#513 ·
Les mainteneurs répondent en général sous 1 jour
-
bug chore tests
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
NanoForge-dev/Engine#511 ·
Les mainteneurs répondent en général sous 1 jour
-
docs(network): TSDoc says ICE_SERVERS defaults to an empty list, the code uses public STUN serversOuvertedocumentation good first issue modules:network
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
NanoForge-dev/Engine#509 ·
Les mainteneurs répondent en général sous 1 jour
-
documentation modules:ecs packages:asset packages:core
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
NanoForge-dev/Engine#508 ·
Les mainteneurs répondent en général sous 1 jour
-
bug good first issue modules:music modules:sound
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
NanoForge-dev/Engine#505 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de NanoForge-dev/Engine
Issues similaires
-
Mend: dependency security vulnerability
Difficulté 1/5 1-3 heures Accessibilité débutants 65/100
fdm-monster/fdm-monster#5563 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
be-BOP-io-SA/be-BOP#2849 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 79/100
Les mainteneurs répondent en général sous 1 jour
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
growilabs/growi#12246 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
🐛 The Rulekeeper - An index run that gives up on the lock ends SucceededPeut-être pris @github-actions l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
SSWConsulting/SSW.Rules#2809 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour