fix(ecs): killing an entity twice makes spawnEntity return the same id twice
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 85/100
Direção de pesquisa
Leia os dois trechos vinculados em modules/ecs/wasm/Registry.hpp (linhas 142–151 e 172–177) e, em seguida, examine os testes em modules/ecs/test. Verifique como os IDs de entidade são alocados e como as entidades mortas são registradas. Adicione testes para matar a mesma entidade duas vezes e para rejeitar um ID maior ou igual a _next_entity; o objetivo é atingido quando spawns repetidos retornam IDs distintos e mortes inválidas não corrompem a alocação.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- TypeScript
- Estrelas
- 7
- Forks
- 2
- Merge médio
- 1d 17h
- PRs com merge (30d)
- 17
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de NanoForge-dev/Engine
-
dependencies enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
NanoForge-dev/Engine#513 ·
Mantenedores costumam responder em até 1 dia
-
bug chore tests
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
NanoForge-dev/Engine#511 ·
Mantenedores costumam responder em até 1 dia
-
docs(network): TSDoc says ICE_SERVERS defaults to an empty list, the code uses public STUN serversAbertadocumentation good first issue modules:network
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
NanoForge-dev/Engine#509 ·
Mantenedores costumam responder em até 1 dia
-
documentation modules:ecs packages:asset packages:core
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
NanoForge-dev/Engine#508 ·
Mantenedores costumam responder em até 1 dia
-
bug good first issue modules:music modules:sound
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
NanoForge-dev/Engine#505 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de NanoForge-dev/Engine
Issues semelhantes
-
Mend: dependency security vulnerability
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 65/100
fdm-monster/fdm-monster#5563 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
be-BOP-io-SA/be-BOP#2849 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 79/100
Mantenedores costumam responder em até 1 dia
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
growilabs/growi#12246 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
🐛 The Rulekeeper - An index run that gives up on the lock ends SucceededTalvez já em andamento @github-actions assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
SSWConsulting/SSW.Rules#2809 · 1 comentário ·
Mantenedores costumam responder em até 1 dia